|
59 | 59 | use Symfony\Component\Lock\LockInterface; |
60 | 60 | use Symfony\Component\Lock\Store\StoreFactory; |
61 | 61 | use Symfony\Component\Lock\StoreInterface; |
| 62 | +use Symfony\Component\Messenger\Transport\ReceiverInterface; |
| 63 | +use Symfony\Component\Messenger\Transport\SenderInterface; |
62 | 64 | use Symfony\Component\PropertyAccess\PropertyAccessor; |
63 | 65 | use Symfony\Component\PropertyInfo\PropertyAccessExtractorInterface; |
64 | 66 | use Symfony\Component\PropertyInfo\PropertyDescriptionExtractorInterface; |
@@ -267,6 +269,12 @@ public function load(array $configs, ContainerBuilder $container) |
267 | 269 | $this->registerLockConfiguration($config['lock'], $container, $loader); |
268 | 270 | } |
269 | 271 |
|
| 272 | + if ($this->isConfigEnabled($container, $config['messenger'])) { |
| 273 | + $this->registerMessengerConfiguration($config['messenger'], $container, $loader); |
| 274 | + } else { |
| 275 | + $container->removeDefinition('console.command.messenger_consume_messages'); |
| 276 | + } |
| 277 | + |
270 | 278 | if ($this->isConfigEnabled($container, $config['web_link'])) { |
271 | 279 | if (!class_exists(HttpHeaderSerializer::class)) { |
272 | 280 | throw new LogicException('WebLink support cannot be enabled as the WebLink component is not installed.'); |
@@ -334,6 +342,10 @@ public function load(array $configs, ContainerBuilder $container) |
334 | 342 | ->addTag('validator.constraint_validator'); |
335 | 343 | $container->registerForAutoconfiguration(ObjectInitializerInterface::class) |
336 | 344 | ->addTag('validator.initializer'); |
| 345 | + $container->registerForAutoconfiguration(ReceiverInterface::class) |
| 346 | + ->addTag('messenger.receiver'); |
| 347 | + $container->registerForAutoconfiguration(SenderInterface::class) |
| 348 | + ->addTag('messenger.sender'); |
337 | 349 |
|
338 | 350 | if (!$container->getParameter('kernel.debug')) { |
339 | 351 | // remove tagged iterator argument for resource checkers |
@@ -1415,6 +1427,26 @@ private function registerLockConfiguration(array $config, ContainerBuilder $cont |
1415 | 1427 | } |
1416 | 1428 | } |
1417 | 1429 |
|
| 1430 | + private function registerMessengerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader) |
| 1431 | + { |
| 1432 | + $loader->load('messenger.xml'); |
| 1433 | + |
| 1434 | + $senderLocatorMapping = array(); |
| 1435 | + $messageToSenderIdsMapping = array(); |
| 1436 | + foreach ($config['routing'] as $message => $messageConfiguration) { |
| 1437 | + foreach ($messageConfiguration['senders'] as $sender) { |
| 1438 | + if (null !== $sender) { |
| 1439 | + $senderLocatorMapping[$sender] = new Reference($sender); |
| 1440 | + } |
| 1441 | + } |
| 1442 | + |
| 1443 | + $messageToSenderIdsMapping[$message] = $messageConfiguration['senders']; |
| 1444 | + } |
| 1445 | + |
| 1446 | + $container->getDefinition('messenger.sender_locator')->replaceArgument(0, $senderLocatorMapping); |
| 1447 | + $container->getDefinition('messenger.asynchronous.routing.sender_locator')->replaceArgument(1, $messageToSenderIdsMapping); |
| 1448 | + } |
| 1449 | + |
1418 | 1450 | private function registerCacheConfiguration(array $config, ContainerBuilder $container) |
1419 | 1451 | { |
1420 | 1452 | $version = new Parameter('container.build_id'); |
|
0 commit comments