|
60 | 60 | use Symfony\Component\Lock\LockInterface;
|
61 | 61 | use Symfony\Component\Lock\Store\StoreFactory;
|
62 | 62 | use Symfony\Component\Lock\StoreInterface;
|
| 63 | +use Symfony\Component\Messenger\DataCollector\BusCollector; |
63 | 64 | use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
|
64 | 65 | use Symfony\Component\Messenger\MessageBus;
|
65 | 66 | use Symfony\Component\Messenger\MessageBusInterface;
|
@@ -1447,26 +1448,33 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
|
1447 | 1448 |
|
1448 | 1449 | $loader->load('messenger.xml');
|
1449 | 1450 |
|
1450 |
| - $container->setParameter('messenger.buses_names', array_keys($config['buses'])); |
| 1451 | + $builtBuses = []; |
1451 | 1452 | foreach ($config['buses'] as $name => $bus) {
|
1452 |
| - $container->setDefinition($busId = 'messenger.bus.'.$name, (new Definition(MessageBus::class, array(array())))->addTag('messenger.bus')->setPublic(true)); |
| 1453 | + $middlewares = array_map(function (array $middleware) use ($container) { |
| 1454 | + if ($container->has($messengerMiddlewareId = 'messenger.middleware.'.$middleware['service'])) { |
| 1455 | + $middleware['service'] = $messengerMiddlewareId; |
| 1456 | + } |
| 1457 | + |
| 1458 | + return new Reference($middleware['service']); |
| 1459 | + }, $bus['middlewares']); |
1453 | 1460 |
|
1454 |
| - if ($name == $config['default_bus']) { |
| 1461 | + $container->setDefinition($busId = 'messenger.bus.'.$name, (new Definition(MessageBus::class, array($middlewares)))->addTag('messenger.bus')->setPublic(true)); |
| 1462 | + |
| 1463 | + if ($name === $config['default_bus']) { |
1455 | 1464 | $container->setAlias('message_bus', $busId);
|
1456 | 1465 | $container->setAlias(MessageBusInterface::class, $busId);
|
1457 | 1466 | }
|
1458 | 1467 |
|
1459 |
| - foreach ($bus['middlewares'] as $middleware) { |
1460 |
| - if (!$container->has($middleware['service'])) { |
1461 |
| - $container->setDefinition($middleware['service'], new Definition($middleware['service'])); |
1462 |
| - } |
| 1468 | + $container->setDefinition( |
| 1469 | + $busId.'.debug', |
| 1470 | + (new Definition(BusCollector::class, array(new Reference($busId.'.debug.inner'), new Reference('messenger.data_collector'))))->setDecoratedService($busId) |
| 1471 | + ); |
1463 | 1472 |
|
1464 |
| - $container->getDefinition($middleware['service'])->addTag('messenger.bus_middleware', array( |
1465 |
| - 'bus' => $name, |
1466 |
| - )); |
1467 |
| - } |
| 1473 | + $builtBuses[$name] = $busId; |
1468 | 1474 | }
|
1469 | 1475 |
|
| 1476 | + $container->setParameter('messenger.buses', $builtBuses); |
| 1477 | + |
1470 | 1478 | $senderLocatorMapping = array();
|
1471 | 1479 | $messageToSenderIdsMapping = array();
|
1472 | 1480 | foreach ($config['routing'] as $message => $messageConfiguration) {
|
|
0 commit comments