diff --git a/src/Symfony/Component/Messenger/CHANGELOG.md b/src/Symfony/Component/Messenger/CHANGELOG.md index 90128ab61d038..7a438586cc7a5 100644 --- a/src/Symfony/Component/Messenger/CHANGELOG.md +++ b/src/Symfony/Component/Messenger/CHANGELOG.md @@ -9,6 +9,7 @@ CHANGELOG * Added support for auto trimming of Redis streams. * `InMemoryTransport` handle acknowledged and rejected messages. * Made all dispatched worker event classes final. + * Added support for `from_transport` attribute on `messenger.message_handler` tag. 4.3.0 ----- diff --git a/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php b/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php index f0d37c4e805df..40ddeef1a2cee 100644 --- a/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php +++ b/src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php @@ -109,6 +109,10 @@ private function registerHandlers(ContainerBuilder $container, array $busIds) $options = ['method' => $options]; } + if (!isset($options['from_transport']) && isset($tag['from_transport'])) { + $options['from_transport'] = $tag['from_transport']; + } + $priority = $tag['priority'] ?? $options['priority'] ?? 0; $method = $options['method'] ?? '__invoke'; diff --git a/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php b/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php index c50a70ea779dc..1c42c39f820db 100644 --- a/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php +++ b/src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php @@ -78,6 +78,25 @@ public function testProcess() ); } + public function testFromTransportViaTagAttribute() + { + $container = $this->getContainerBuilder($busId = 'message_bus'); + $container + ->register(DummyHandler::class, DummyHandler::class) + ->addTag('messenger.message_handler', ['from_transport' => 'async']) + ; + + (new MessengerPass())->process($container); + + $handlersLocatorDefinition = $container->getDefinition($busId.'.messenger.handlers_locator'); + $this->assertSame(HandlersLocator::class, $handlersLocatorDefinition->getClass()); + + $handlerDescriptionMapping = $handlersLocatorDefinition->getArgument(0); + $this->assertCount(1, $handlerDescriptionMapping); + + $this->assertHandlerDescriptor($container, $handlerDescriptionMapping, DummyMessage::class, [DummyHandler::class], [['from_transport' => 'async']]); + } + public function testProcessHandlersByBus() { $container = $this->getContainerBuilder($commandBusId = 'command_bus'); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy