Skip to content

Commit 3dd9466

Browse files
committed
[Messenger] Fix TransportMessageIdStamp not always added
1 parent f0b9704 commit 3dd9466

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

Tests/Transport/RedisReceiverTest.php

+10-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
use Symfony\Component\Messenger\Bridge\Redis\Tests\Fixtures\ExternalMessageSerializer;
1818
use Symfony\Component\Messenger\Bridge\Redis\Transport\Connection;
1919
use Symfony\Component\Messenger\Bridge\Redis\Transport\RedisReceiver;
20+
use Symfony\Component\Messenger\Envelope;
2021
use Symfony\Component\Messenger\Exception\MessageDecodingFailedException;
22+
use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
2123
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
2224
use Symfony\Component\Messenger\Transport\Serialization\Serializer;
2325
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
@@ -38,7 +40,14 @@ public function testItReturnsTheDecodedMessageToTheHandler(array $redisEnvelope,
3840
$receiver = new RedisReceiver($connection, $serializer);
3941
$actualEnvelopes = $receiver->get();
4042
$this->assertCount(1, $actualEnvelopes);
41-
$this->assertEquals($expectedMessage, $actualEnvelopes[0]->getMessage());
43+
/** @var Envelope $actualEnvelope */
44+
$actualEnvelope = $actualEnvelopes[0];
45+
$this->assertEquals($expectedMessage, $actualEnvelope->getMessage());
46+
47+
/** @var TransportMessageIdStamp $transportMessageIdStamp */
48+
$transportMessageIdStamp = $actualEnvelope->last(TransportMessageIdStamp::class);
49+
$this->assertNotNull($transportMessageIdStamp);
50+
$this->assertSame($redisEnvelope['id'], $transportMessageIdStamp->getId());
4251
}
4352

4453
/**

Transport/RedisReceiver.php

+7-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\Messenger\Exception\LogicException;
1616
use Symfony\Component\Messenger\Exception\MessageDecodingFailedException;
1717
use Symfony\Component\Messenger\Exception\TransportException;
18+
use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
1819
use Symfony\Component\Messenger\Transport\Receiver\MessageCountAwareInterface;
1920
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
2021
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
@@ -76,7 +77,12 @@ public function get(): iterable
7677
throw $exception;
7778
}
7879

79-
return [$envelope->with(new RedisReceivedStamp($message['id']))];
80+
return [$envelope
81+
->withoutAll(TransportMessageIdStamp::class)
82+
->with(
83+
new RedisReceivedStamp($message['id']),
84+
new TransportMessageIdStamp($message['id'])
85+
)];
8086
}
8187

8288
public function ack(Envelope $envelope): void

0 commit comments

Comments
 (0)