diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index d41e0a97b9569..97236fdaf5d8c 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -1801,17 +1801,18 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder } $defaultMiddleware = [ - 'before' => [ - ['id' => 'add_bus_name_stamp_middleware'], - ['id' => 'reject_redelivered_message_middleware'], - ['id' => 'dispatch_after_current_bus'], - ['id' => 'failed_message_processing_middleware'], - ], + 'before' => [], 'after' => [ ['id' => 'send_message'], ['id' => 'handle_message'], ], ]; + $defaultMiddleware['before'][] = ['id' => 'add_bus_name_stamp_middleware']; + if (!$config['failure_transport']) { + $defaultMiddleware['before'][] = ['id' => 'reject_redelivered_message_middleware']; + } + $defaultMiddleware['before'][] = ['id' => 'dispatch_after_current_bus']; + $defaultMiddleware['before'][] = ['id' => 'failed_message_processing_middleware']; foreach ($config['buses'] as $busId => $bus) { $middleware = $bus['middleware']; diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_redelivery_failure_disabled.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_redelivery_failure_disabled.php new file mode 100644 index 0000000000000..7b4562510efd2 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_redelivery_failure_disabled.php @@ -0,0 +1,10 @@ +loadFromExtension('framework', [ + 'serializer' => true, + 'messenger' => [ + 'transports' => [ + 'example' => 'redis://127.0.0.1:6379/messages', + ], + ], +]); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_redelivery_failure_enabled.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_redelivery_failure_enabled.php new file mode 100644 index 0000000000000..130a428c7b316 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_redelivery_failure_enabled.php @@ -0,0 +1,12 @@ +loadFromExtension('framework', [ + 'serializer' => true, + 'messenger' => [ + 'failure_transport' => 'failed', + 'transports' => [ + 'example' => 'redis://127.0.0.1:6379/messages', + 'failed' => 'in-memory:///', + ], + ], +]); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_redelivery_failure_disabled.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_redelivery_failure_disabled.xml new file mode 100644 index 0000000000000..4f12a0bce5cf2 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_redelivery_failure_disabled.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_redelivery_failure_enabled.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_redelivery_failure_enabled.xml new file mode 100644 index 0000000000000..164e552529dd5 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_redelivery_failure_enabled.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_redelivery_failure_disabled.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_redelivery_failure_disabled.yml new file mode 100644 index 0000000000000..c4eb7f1c2f4f2 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_redelivery_failure_disabled.yml @@ -0,0 +1,4 @@ +framework: + messenger: + transports: + example: 'redis://127.0.0.1:6379/messages' diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_redelivery_failure_enabled.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_redelivery_failure_enabled.yml new file mode 100644 index 0000000000000..538a684beaa1e --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_redelivery_failure_enabled.yml @@ -0,0 +1,6 @@ +framework: + messenger: + transports: + example: 'redis://127.0.0.1:6379/messages' + failed: 'in-memory:///' + failure_transport: failed diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php index d6a3bf5ae995a..6d66ede78e00d 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php @@ -760,6 +760,18 @@ public function testMessengerTransports() $this->assertEquals(new Reference('messenger.transport.failed'), $container->getDefinition('messenger.failure.send_failed_message_to_failure_transport_listener')->getArgument(0)); } + public function testMessengerRedeliveryFailureTransportDisabled() + { + $container = $this->createContainerFromFile('messenger_redelivery_failure_disabled'); + $this->assertContains(['id' => 'reject_redelivered_message_middleware'], $container->getParameter('messenger.bus.default.middleware')); + } + + public function testMessengerRedeliveryFailureTransportEnabled() + { + $container = $this->createContainerFromFile('messenger_redelivery_failure_enabled'); + $this->assertNotContains(['id' => 'reject_redelivered_message_middleware'], $container->getParameter('messenger.bus.default.middleware')); + } + public function testMessengerRouting() { $container = $this->createContainerFromFile('messenger_routing');