From 4417e02ca80c540bfefcbb682e2d9339261365dd Mon Sep 17 00:00:00 2001 From: Andreas Braun Date: Thu, 4 Apr 2019 11:25:40 +0200 Subject: [PATCH 1/2] Extract loading messenger integration into private method --- DependencyInjection/DoctrineExtension.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index 8c54f7bef..543d1b99f 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -367,13 +367,7 @@ protected function ormLoad(array $config, ContainerBuilder $container) $container->registerForAutoconfiguration(ServiceEntityRepositoryInterface::class) ->addTag(ServiceRepositoryCompilerPass::REPOSITORY_SERVICE_TAG); - // If the Messenger component is installed and the doctrine transaction middleware is available, wire it: - if (! interface_exists(MessageBusInterface::class) || ! class_exists(DoctrineTransactionMiddleware::class)) { - return; - } - - $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - $loader->load('messenger.xml'); + $this->loadMessengerServices($container); } /** @@ -793,4 +787,15 @@ public function getConfiguration(array $config, ContainerBuilder $container) { return new Configuration($container->getParameter('kernel.debug')); } + + private function loadMessengerServices(ContainerBuilder $container) : void + { + // If the Messenger component is installed and the doctrine transaction middleware is available, wire it: + if (! interface_exists(MessageBusInterface::class) || ! class_exists(DoctrineTransactionMiddleware::class)) { + return; + } + + $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load('messenger.xml'); + } } From 45817de4471962219fd5b7f5f294496ea7535b8c Mon Sep 17 00:00:00 2001 From: Andreas Braun Date: Thu, 4 Apr 2019 11:32:22 +0200 Subject: [PATCH 2/2] Wire transport factory service when messenger component is present --- DependencyInjection/DoctrineExtension.php | 8 ++++++++ Resources/config/messenger.xml | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index 543d1b99f..87fe46c9d 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -21,6 +21,7 @@ use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\Messenger\MessageBusInterface; +use Symfony\Component\Messenger\Transport\Doctrine\DoctrineTransportFactory; /** * DoctrineExtension is an extension for the Doctrine DBAL and ORM library. @@ -797,5 +798,12 @@ private function loadMessengerServices(ContainerBuilder $container) : void $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load('messenger.xml'); + + if (! class_exists(DoctrineTransportFactory::class)) { + return; + } + + $transportFactoryDefinition = $container->getDefinition('messenger.transport.doctrine.factory'); + $transportFactoryDefinition->addTag('messenger.transport_factory'); } } diff --git a/Resources/config/messenger.xml b/Resources/config/messenger.xml index 269e42d9f..9bc713672 100644 --- a/Resources/config/messenger.xml +++ b/Resources/config/messenger.xml @@ -11,5 +11,13 @@ + + + + +