Skip to content

Commit 7ca5cc2

Browse files
committed
[Messenger] prevent infinite redelivery loops and blocked queues
by republishing the redelivered messages as retries with a retry limit and potential delay
1 parent 597591d commit 7ca5cc2

File tree

4 files changed

+7
-2
lines changed

4 files changed

+7
-2
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1649,6 +1649,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
16491649
$defaultMiddleware = [
16501650
'before' => [
16511651
['id' => 'add_bus_name_stamp_middleware'],
1652+
['id' => 'reject_redelivered_message_middleware'],
16521653
['id' => 'dispatch_after_current_bus'],
16531654
['id' => 'failed_message_processing_middleware'],
16541655
],

Resources/config/messenger.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
<argument type="service" id="validator" />
4949
</service>
5050

51+
<service id="messenger.middleware.reject_redelivered_message_middleware" class="Symfony\Component\Messenger\Middleware\RejectRedeliveredMessageMiddleware" />
52+
5153
<service id="messenger.middleware.failed_message_processing_middleware" class="Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware" />
5254

5355
<service id="messenger.middleware.traceable" class="Symfony\Component\Messenger\Middleware\TraceableMiddleware" abstract="true">

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,7 @@ public function testMessengerWithMultipleBuses()
739739
$this->assertSame([], $container->getDefinition('messenger.bus.commands')->getArgument(0));
740740
$this->assertEquals([
741741
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.commands']],
742+
['id' => 'reject_redelivered_message_middleware'],
742743
['id' => 'dispatch_after_current_bus'],
743744
['id' => 'failed_message_processing_middleware'],
744745
['id' => 'send_message'],
@@ -748,6 +749,7 @@ public function testMessengerWithMultipleBuses()
748749
$this->assertSame([], $container->getDefinition('messenger.bus.events')->getArgument(0));
749750
$this->assertEquals([
750751
['id' => 'add_bus_name_stamp_middleware', 'arguments' => ['messenger.bus.events']],
752+
['id' => 'reject_redelivered_message_middleware'],
751753
['id' => 'dispatch_after_current_bus'],
752754
['id' => 'failed_message_processing_middleware'],
753755
['id' => 'with_factory', 'arguments' => ['foo', true, ['bar' => 'baz']]],

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"symfony/expression-language": "~3.4|~4.0",
4343
"symfony/http-client": "^4.3",
4444
"symfony/mailer": "^4.3",
45-
"symfony/messenger": "^4.3",
45+
"symfony/messenger": "^4.3.6",
4646
"symfony/mime": "^4.3",
4747
"symfony/process": "~3.4|~4.0",
4848
"symfony/security-csrf": "~3.4|~4.0",
@@ -73,7 +73,7 @@
7373
"symfony/dotenv": "<4.2",
7474
"symfony/dom-crawler": "<4.3",
7575
"symfony/form": "<4.3",
76-
"symfony/messenger": "<4.3",
76+
"symfony/messenger": "<4.3.6",
7777
"symfony/property-info": "<3.4",
7878
"symfony/serializer": "<4.2",
7979
"symfony/stopwatch": "<3.4",

0 commit comments

Comments
 (0)