Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f9c20d8

Browse files
committed
Fixing bug where an invalid messageId could be attached to a message
1) send to a "listable receiver" transport and receive from this 2) After all the failures, sent to a non-listable receiver transport for failure handling. The TransportMessageIdStamp would still be present from the original transport
1 parent 5c32f29 commit f9c20d8

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

src/Symfony/Component/Messenger/EventListener/SendFailedMessageToFailureTransportListener.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use Symfony\Component\Messenger\Stamp\RedeliveryStamp;
2121
use Symfony\Component\Messenger\Stamp\SentStamp;
2222
use Symfony\Component\Messenger\Stamp\SentToFailureTransportStamp;
23+
use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
2324

2425
/**
2526
* Sends a rejected message to a "failure transport".
@@ -65,6 +66,7 @@ public function onMessageFailed(WorkerMessageFailedEvent $event)
6566

6667
$flattenedException = \class_exists(FlattenException::class) ? FlattenException::createFromThrowable($throwable) : null;
6768
$envelope = $envelope->withoutAll(ReceivedStamp::class)
69+
->withoutAll(TransportMessageIdStamp::class)
6870
->with(new SentToFailureTransportStamp($throwable->getMessage(), $event->getReceiverName(), $flattenedException))
6971
->with(new RedeliveryStamp(0, $this->failureSenderAlias));
7072

src/Symfony/Component/Messenger/Tests/EventListener/SendFailedMessageToFailureTransportListenerTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717
use Symfony\Component\Messenger\EventListener\SendFailedMessageToFailureTransportListener;
1818
use Symfony\Component\Messenger\Exception\HandlerFailedException;
1919
use Symfony\Component\Messenger\MessageBusInterface;
20+
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
2021
use Symfony\Component\Messenger\Stamp\RedeliveryStamp;
2122
use Symfony\Component\Messenger\Stamp\SentStamp;
2223
use Symfony\Component\Messenger\Stamp\SentToFailureTransportStamp;
24+
use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
2325

2426
class SendFailedMessageToFailureTransportListenerTest extends TestCase
2527
{
@@ -41,6 +43,9 @@ public function testItDispatchesToTheFailureTransport()
4143
$redeliveryStamp = $envelope->last(RedeliveryStamp::class);
4244
$this->assertSame('failure_sender', $redeliveryStamp->getSenderClassOrAlias());
4345

46+
$this->assertNull($envelope->last(ReceivedStamp::class));
47+
$this->assertNull($envelope->last(TransportMessageIdStamp::class));
48+
4449
return true;
4550
}))->willReturn(new Envelope(new \stdClass()));
4651
$listener = new SendFailedMessageToFailureTransportListener(

0 commit comments

Comments
 (0)