Skip to content

Commit 12b17e8

Browse files
committed
[FrameworkBundle] Fix argument not provided to add_bus_name_stamp_middleware
The bus name only gets provided to `add_bus_name_stamp_middleware` if using the default middlewares meaning that if you want to define the middlewares yourself then you need to define this service or you get an error: `Too few arguments to function Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware::__construct(), 0 passed`
1 parent 9a7f7a3 commit 12b17e8

File tree

5 files changed

+89
-4
lines changed

5 files changed

+89
-4
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2214,16 +2214,18 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
22142214
$defaultMiddleware['after'][0]['arguments'] = [$bus['default_middleware']['allow_no_senders']];
22152215
$defaultMiddleware['after'][1]['arguments'] = [$bus['default_middleware']['allow_no_handlers']];
22162216

2217-
// argument to add_bus_name_stamp_middleware
2218-
$defaultMiddleware['before'][0]['arguments'] = [$busId];
2219-
22202217
$middleware = array_merge($defaultMiddleware['before'], $middleware, $defaultMiddleware['after']);
22212218
}
22222219

2223-
foreach ($middleware as $middlewareItem) {
2220+
foreach ($middleware as $key => $middlewareItem) {
22242221
if (!$validationEnabled && \in_array($middlewareItem['id'], ['validation', 'messenger.middleware.validation'], true)) {
22252222
throw new LogicException('The Validation middleware is only available when the Validator component is installed and enabled. Try running "composer require symfony/validator".');
22262223
}
2224+
2225+
// argument to add_bus_name_stamp_middleware
2226+
if ('add_bus_name_stamp_middleware' === $middlewareItem['id']) {
2227+
$middleware[$key]['arguments'] = [$busId];
2228+
}
22272229
}
22282230

22292231
if ($container->getParameter('kernel.debug') && class_exists(Stopwatch::class)) {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework', [
4+
'annotations' => false,
5+
'http_method_override' => false,
6+
'handle_all_throwables' => true,
7+
'php_errors' => ['log' => true],
8+
'messenger' => [
9+
'default_bus' => 'messenger.bus.commands',
10+
'buses' => [
11+
'messenger.bus.commands' => [
12+
'default_middleware' => false,
13+
'middleware' => [
14+
'add_bus_name_stamp_middleware',
15+
'send_message',
16+
'handle_message',
17+
],
18+
],
19+
'messenger.bus.events' => [
20+
'default_middleware' => true,
21+
],
22+
],
23+
],
24+
]);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<container xmlns="http://symfony.com/schema/dic/services"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:framework="http://symfony.com/schema/dic/symfony"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd
6+
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
7+
8+
<framework:config http-method-override="false" handle-all-throwables="true">
9+
<framework:annotations enabled="false" />
10+
<framework:php-errors log="true" />
11+
<framework:messenger default-bus="messenger.bus.commands">
12+
<framework:bus name="messenger.bus.commands" default-middleware="false">
13+
<framework:middleware id="add_bus_name_stamp_middleware" />
14+
<framework:middleware id="send_message" />
15+
<framework:middleware id="handle_message" />
16+
</framework:bus>
17+
<framework:bus name="messenger.bus.events" default-middleware="true" />
18+
</framework:messenger>
19+
</framework:config>
20+
</container>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
framework:
2+
annotations: false
3+
http_method_override: false
4+
handle_all_throwables: true
5+
php_errors:
6+
log: true
7+
messenger:
8+
default_bus: messenger.bus.commands
9+
buses:
10+
messenger.bus.commands:
11+
default_middleware: false
12+
middleware:
13+
- "add_bus_name_stamp_middleware"
14+
- "send_message"
15+
- "handle_message"
16+
messenger.bus.events:
17+
default_middleware: true

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,6 +1102,28 @@ public function testMessengerWithMultipleBuses()
11021102
$this->assertSame('messenger.bus.commands', (string) $container->getAlias('messenger.default_bus'));
11031103
}
11041104

1105+
public function testMessengerWithAddBusNameStampMiddleware()
1106+
{
1107+
$container = $this->createContainerFromFile('messenger_bus_name_stamp');
1108+
1109+
$this->assertTrue($container->has('messenger.bus.commands'));
1110+
$this->assertEquals([
1111+
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.commands']],
1112+
['id' => 'send_message', 'arguments' => []],
1113+
['id' => 'handle_message', 'arguments' => []],
1114+
], $container->getParameter('messenger.bus.commands.middleware'));
1115+
$this->assertTrue($container->has('messenger.bus.events'));
1116+
$this->assertSame([], $container->getDefinition('messenger.bus.events')->getArgument(0));
1117+
$this->assertEquals([
1118+
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.events']],
1119+
['id' => 'reject_redelivered_message_middleware'],
1120+
['id' => 'dispatch_after_current_bus'],
1121+
['id' => 'failed_message_processing_middleware'],
1122+
['id' => 'send_message', 'arguments' => [true]],
1123+
['id' => 'handle_message', 'arguments' => [false]],
1124+
], $container->getParameter('messenger.bus.events.middleware'));
1125+
}
1126+
11051127
public function testMessengerMiddlewareFactoryErroneousFormat()
11061128
{
11071129
$this->expectException(\InvalidArgumentException::class);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy