Skip to content

Commit 92b0151

Browse files
weaverryansroze
authored andcommitted
Fixing a bug where a transport could receive a message and dispatch it to a different bus
1 parent e8f6057 commit 92b0151

File tree

4 files changed

+16
-3
lines changed

4 files changed

+16
-3
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1616,8 +1616,14 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
16161616
}
16171617

16181618
$defaultMiddleware = [
1619-
'before' => [['id' => 'dispatch_after_current_bus']],
1620-
'after' => [['id' => 'send_message'], ['id' => 'handle_message']],
1619+
'before' => [
1620+
['id' => 'add_bus_name_stamp_middleware'],
1621+
['id' => 'dispatch_after_current_bus'],
1622+
],
1623+
'after' => [
1624+
['id' => 'send_message'],
1625+
['id' => 'handle_message'],
1626+
],
16211627
];
16221628
foreach ($config['buses'] as $busId => $bus) {
16231629
$middleware = $bus['middleware'];
@@ -1628,6 +1634,10 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
16281634
} else {
16291635
unset($defaultMiddleware['after'][1]['arguments']);
16301636
}
1637+
1638+
// argument to add_bus_name_stamp_middleware
1639+
$defaultMiddleware['before'][0]['arguments'] = [$busId];
1640+
16311641
$middleware = array_merge($defaultMiddleware['before'], $middleware, $defaultMiddleware['after']);
16321642
}
16331643

Resources/config/console.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@
8181
<argument type="service" id="messenger.receiver_locator" />
8282
<argument type="service" id="logger" on-invalid="null" />
8383
<argument type="collection" /> <!-- Receiver names -->
84-
<argument type="collection" /> <!-- Message bus names -->
8584
<argument type="service" id="messenger.retry_strategy_locator" />
8685
<argument type="service" id="event_dispatcher" />
8786

Resources/config/messenger.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
</call>
4040
</service>
4141

42+
<service id="messenger.middleware.add_bus_name_stamp_middleware" class="Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware" abstract="true" />
43+
4244
<service id="messenger.middleware.dispatch_after_current_bus" class="Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware" />
4345

4446
<service id="messenger.middleware.validation" class="Symfony\Component\Messenger\Middleware\ValidationMiddleware">

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,13 +727,15 @@ public function testMessengerWithMultipleBuses()
727727
$this->assertTrue($container->has('messenger.bus.commands'));
728728
$this->assertSame([], $container->getDefinition('messenger.bus.commands')->getArgument(0));
729729
$this->assertEquals([
730+
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.commands']],
730731
['id' => 'dispatch_after_current_bus'],
731732
['id' => 'send_message'],
732733
['id' => 'handle_message'],
733734
], $container->getParameter('messenger.bus.commands.middleware'));
734735
$this->assertTrue($container->has('messenger.bus.events'));
735736
$this->assertSame([], $container->getDefinition('messenger.bus.events')->getArgument(0));
736737
$this->assertEquals([
738+
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.events']],
737739
['id' => 'dispatch_after_current_bus'],
738740
['id' => 'with_factory', 'arguments' => ['foo', true, ['bar' => 'baz']]],
739741
['id' => 'send_message'],

0 commit comments

Comments
 (0)