Skip to content

Commit d50a0b7

Browse files
committed
add senders to SendMessageToTransportsEvent
1 parent 02b40c0 commit d50a0b7

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

src/Symfony/Component/Messenger/Event/SendMessageToTransportsEvent.php

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

1414
use Symfony\Component\Messenger\Envelope;
15+
use Symfony\Component\Messenger\Transport\Sender\SenderInterface;
1516

1617
/**
1718
* Event is dispatched before a message is sent to the transport.
@@ -28,9 +29,12 @@ final class SendMessageToTransportsEvent
2829
{
2930
private Envelope $envelope;
3031

31-
public function __construct(Envelope $envelope)
32+
private array $senders;
33+
34+
public function __construct(Envelope $envelope, array $senders)
3235
{
3336
$this->envelope = $envelope;
37+
$this->senders = $senders;
3438
}
3539

3640
public function getEnvelope(): Envelope
@@ -42,4 +46,12 @@ public function setEnvelope(Envelope $envelope)
4246
{
4347
$this->envelope = $envelope;
4448
}
49+
50+
/**
51+
* @return array<string, SenderInterface>
52+
*/
53+
public function getSenders(): array
54+
{
55+
return $this->senders;
56+
}
4557
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,11 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
5555
$this->logger->info('Received message {class}', $context);
5656
} else {
5757
$shouldDispatchEvent = true;
58-
foreach ($this->sendersLocator->getSenders($envelope) as $alias => $sender) {
58+
$senders = $this->sendersLocator->getSenders($envelope);
59+
$senders = \is_array($senders) ? $senders : \iterator_to_array($senders);
60+
foreach ($senders as $alias => $sender) {
5961
if (null !== $this->eventDispatcher && $shouldDispatchEvent) {
60-
$event = new SendMessageToTransportsEvent($envelope);
62+
$event = new SendMessageToTransportsEvent($envelope, $senders);
6163
$this->eventDispatcher->dispatch($event);
6264
$envelope = $event->getEnvelope();
6365
$shouldDispatchEvent = false;

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,13 @@ public function testItDispatchesTheEventOneTime()
168168
{
169169
$envelope = new Envelope(new DummyMessage('original envelope'));
170170

171+
$sender1 = $this->createMock(SenderInterface::class);
172+
$sender2 = $this->createMock(SenderInterface::class);
173+
171174
$dispatcher = $this->createMock(EventDispatcherInterface::class);
172175
$dispatcher->expects($this->once())
173176
->method('dispatch')
174-
->with(new SendMessageToTransportsEvent($envelope));
175-
176-
$sender1 = $this->createMock(SenderInterface::class);
177-
$sender2 = $this->createMock(SenderInterface::class);
177+
->with(new SendMessageToTransportsEvent($envelope, ['foo' => $sender1, 'bar' => $sender2]));
178178

179179
$sendersLocator = $this->createSendersLocator([DummyMessage::class => ['foo', 'bar']], ['foo' => $sender1, 'bar' => $sender2]);
180180
$middleware = new SendMessageMiddleware($sendersLocator, $dispatcher);

0 commit comments

Comments
 (0)