8000 [Messenger] Consume a PSR-14 dispatcher for dispatching events · symfony/symfony@5e04bf4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5e04bf4

Browse files
committed
[Messenger] Consume a PSR-14 dispatcher for dispatching events
1 parent c9a5155 commit 5e04bf4

File tree

7 files changed

+38
-11
lines changed

7 files changed

+38
-11
lines changed

src/Symfony/Component/Messenger/EventListener/SendFailedMessageForRetryListener.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
namespace Symfony\Component\Messenger\EventListener;
1212

1313
use Psr\Container\ContainerInterface;
14+
use Psr\EventDispatcher\EventDispatcherInterface;
1415
use Psr\Log\LoggerInterface;
16+
use Symfony\Component\EventDispatcher\Event;
1517
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
18+
use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
1619
use Symfony\Component\Messenger\Envelope;
1720
use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;
1821
use Symfony\Component\Messenger\Event\WorkerMessageRetriedEvent;
@@ -25,7 +28,7 @@
2528
use Symfony\Component\Messenger\Stamp\RedeliveryStamp;
2629
use Symfony\Component\Messenger\Stamp\StampInterface;
2730
use Symfony\Component\Messenger\Transport\Sender\SenderInterface;
28-
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
31+
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface as SymfonyEventDispatcherInterface;
2932

3033
/**
3134
* @author Tobias Schultze <http://tobion.de>
@@ -43,7 +46,9 @@ public function __construct(ContainerInterface $sendersLocator, ContainerInterfa
4346
$this->sendersLocator = $sendersLocator;
4447
$this->retryStrategyLocator = $retryStrategyLocator;
4548
$this->logger = $logger;
46-
$this->eventDispatcher = $eventDispatcher;
49+
$this->eventDispatcher = class_exists(Event::class) && $eventDispatcher instanceof SymfonyEventDispatcherInterface
50+
? LegacyEventDispatcherProxy::decorate($eventDispatcher)
51+
: $eventDispatcher;
4752
$this->historySize = $historySize;
4853
}
4954

src/Symfony/Component/Messenger/Middleware/SendMessageMiddleware.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Component\Messenger\Middleware;
1313

14+
use Psr\EventDispatcher\EventDispatcherInterface;
1415
use Psr\Log\LoggerAwareTrait;
1516
use Psr\Log\NullLogger;
1617
use Symfony\Component\EventDispatcher\Event;
@@ -20,7 +21,7 @@
2021
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
2122
use Symfony\Component\Messenger\Stamp\SentStamp;
2223
use Symfony\Component\Messenger\Transport\Sender\SendersLocatorInterface;
23-
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
24+
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface as SymfonyEventDispatcherInterface;
2425

2526
/**
2627
* @author Samuel Roze <samuel.roze@gmail.com>
@@ -36,7 +37,9 @@ class SendMessageMiddleware implements MiddlewareInterface
3637
public function __construct(SendersLocatorInterface $sendersLocator, EventDispatcherInterface $eventDispatcher = null)
3738
{
3839
$this->sendersLocator = $sendersLocator;
39-
$this->eventDispatcher = class_exists(Event::class) ? LegacyEventDispatcherProxy::decorate($eventDispatcher) : $eventDispatcher;
40+
$this->eventDispatcher = class_exists(Event::class) && $eventDispatcher instanceof SymfonyEventDispatcherInterface
41+
? LegacyEventDispatcherProxy::decorate($eventDispatcher)
42+
: $eventDispatcher;
4043
$this->logger = new NullLogger();
4144
}
4245

src/Symfony/Component/Messenger/Tests/EventListener/SendFailedMessageForRetryListenerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Psr\Container\ContainerInterface;
16+
use Psr\EventDispatcher\EventDispatcherInterface;
1617
use Symfony\Component\Messenger\Envelope;
1718
use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;
1819
use Symfony\Component\Messenger\EventListener\SendFailedMessageForRetryListener;
@@ -21,7 +22,6 @@
2122
use Symfony\Component\Messenger\Stamp\DelayStamp;
2223
use Symfony\Component\Messenger\Stamp\RedeliveryStamp;
2324
use Symfony\Component\Messenger\Transport\Sender\SenderInterface;
24-
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
2525

2626
class SendFailedMessageForRetryListenerTest extends TestCase
2727
{

src/Symfony/Component/Messenger/Tests/Middleware/SendMessageMiddlewareTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Component\Messenger\Tests\Middleware;
1313

1414
use Psr\Container\ContainerInterface;
15+
use Psr\EventDispatcher\EventDispatcherInterface;
1516
use Symfony\Component\Messenger\Envelope;
1617
use Symfony\Component\Messenger\Event\SendMessageToTransportsEvent;
1718
use Symfony\Component\Messenger\Middleware\SendMessageMiddleware;
@@ -23,7 +24,6 @@
2324
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessageInterface;
2425
use Symfony\Component\Messenger\Transport\Sender\SenderInterface;
2526
use Symfony\Component\Messenger\Transport\Sender\SendersLocator;
26-
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
2727

2828
class SendMessageMiddlewareTest extends MiddlewareTestCase
2929
{

src/Symfony/Component/Messenger/Tests/WorkerTest.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Component\Messenger\Tests;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Psr\EventDispatcher\EventDispatcherInterface;
1516
use Psr\Log\LoggerInterface;
1617
use Symfony\Component\EventDispatcher\EventDispatcher;
1718
use Symfony\Component\Messenger\Envelope;
@@ -39,7 +40,6 @@
3940
use Symfony\Component\Messenger\Transport\Receiver\QueueReceiverInterface;
4041
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
4142
use Symfony\Component\Messenger\Worker;
42-
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
4343
use Symfony\Contracts\Service\ResetInterface;
4444

4545
/**
@@ -65,8 +65,23 @@ public function testWorkerDispatchTheReceivedMessage()
6565
return $envelopes[] = $envelope;
6666
});
6767

68-
$dispatcher = new EventDispatcher();
69-
$dispatcher->addSubscriber(new StopWorkerOnMessageLimitListener(2));
68+
$dispatcher = new class() implements EventDispatcherInterface {
69+
private $listener;
70+
71+
public function __construct()
72+
{
73+
$this->listener = new StopWorkerOnMessageLimitListener(2);
74+
}
75+
76+
public function dispatch(object $event): object
77+
{
78+
if ($event instanceof WorkerRunningEvent) {
79+
$this->listener->onWorkerRunning($event);
80+
}
81+
82+
return $event;
83+
}
84+
};
7085

7186
$worker = new Worker(['transport' => $receiver], $bus, $dispatcher);
7287
$worker->run();

src/Symfony/Component/Messenger/Worker.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Component\Messenger;
1313

14+
use Psr\EventDispatcher\EventDispatcherInterface;
1415
use Psr\Log\LoggerInterface;
1516
use Symfony\Component\EventDispatcher\Event;
1617
use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
@@ -30,7 +31,7 @@
3031
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
3132
use Symfony\Component\Messenger\Transport\Receiver\QueueReceiverInterface;
3233
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
33-
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
34+
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface as SymfonyEventDispatcherInterface;
3435
use Symfony\Contracts\Service\ResetInterface;
3536

3637
/**
@@ -58,7 +59,9 @@ public function __construct(array $receivers, MessageBusInterface $bus, EventDis
5859
$this->receivers = $receivers;
5960
$this->bus = $bus;
6061
$this->logger = $logger;
61-
$this->eventDispatcher = class_exists(Event::class) ? LegacyEventDispatcherProxy::decorate($eventDispatcher) : $eventDispatcher;
62+
$this->eventDispatcher = class_exists(Event::class) && $eventDispatcher instanceof SymfonyEventDispatcherInterface
63+
? LegacyEventDispatcherProxy::decorate($eventDispatcher)
64+
: $eventDispatcher;
6265
$this->metadata = new WorkerMetadata([
6366
'transportNames' => array_keys($receivers),
6467
]);

src/Symfony/Component/Messenger/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"require": {
1919
"php": ">=7.2.5",
2020
"psr/log": "^1|^2|^3",
21+
"psr/event-dispatcher": "^1",
2122
"symfony/amqp-messenger": "^5.1|^6.0",
2223
"symfony/deprecation-contracts": "^2.1|^3",
2324
"symfony/doctrine-messenger": "^5.1|^6.0",

0 commit comments

Comments
 (0)
0