|
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