Skip to content

Commit 7ef483c

Browse files
committed
add messenger configuration to make a message bus not get all handlers by default
1 parent e3f72bd commit 7ef483c

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,6 +1382,9 @@ function ($a) {
13821382
->values([true, false, 'allow_no_handlers'])
13831383
->defaultTrue()
13841384
->end()
1385+
->booleanNode('default_handlers')
1386+
->defaultTrue()
1387+
->end()
13851388
->arrayNode('middleware')
13861389
->performNoDeepMerging()
13871390
->beforeNormalization()

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1956,7 +1956,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
19561956
}
19571957

19581958
$container->setParameter($busId.'.middleware', $middleware);
1959-
$container->register($busId, MessageBus::class)->addArgument([])->addTag('messenger.bus');
1959+
$container->register($busId, MessageBus::class)->addArgument([])->addTag('messenger.bus', ['default_handlers' => $bus['default_handlers'] ?? true]);
19601960

19611961
if ($busId === $config['default_bus']) {
19621962
$container->setAlias('messenger.default_bus', $busId)->setPublic(true);

src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,14 @@ public function __construct(string $handlerTag = 'messenger.message_handler', st
5151
public function process(ContainerBuilder $container)
5252
{
5353
$busIds = [];
54+
$defaultBusIds = [];
5455
foreach ($container->findTaggedServiceIds($this->busTag) as $busId => $tags) {
5556
$busIds[] = $busId;
57+
$tag = reset($tags);
58+
if ($tag['default_handlers'] ?? true) {
59+
$defaultBusIds[] = $busId;
60+
}
61+
5662
if ($container->hasParameter($busMiddlewareParameter = $busId.'.middleware')) {
5763
$this->registerBusMiddleware($container, $busId, $container->getParameter($busMiddlewareParameter));
5864

@@ -67,10 +73,10 @@ public function process(ContainerBuilder $container)
6773
if ($container->hasDefinition('messenger.receiver_locator')) {
6874
$this->registerReceivers($container, $busIds);
6975
}
70-
$this->registerHandlers($container, $busIds);
76+
$this->registerHandlers($container, $busIds, $defaultBusIds);
7177
}
7278

73-
private function registerHandlers(ContainerBuilder $container, array $busIds)
79+
private function registerHandlers(ContainerBuilder $container, array $busIds, array $defaultBusIds)
7480
{
7581
$definitions = [];
7682
$handlersByBusAndMessage = [];
@@ -96,7 +102,7 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
96102
}
97103

98104
$message = null;
99-
$handlerBuses = (array) ($tag['bus'] ?? $busIds);
105+
$handlerBuses = (array) ($tag['bus'] ?? $defaultBusIds);
100106

101107
foreach ($handles as $message => $options) {
102108
$buses = $handlerBuses;

0 commit comments

Comments
 (0)