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

Skip to content

Commit 77a8de8

Browse files
committed
[Messenger] Fix TransportMessageIdStamp not always added
1 parent 4166af2 commit 77a8de8

File tree

7 files changed

+46
-10
lines changed

7 files changed

+46
-10
lines changed

src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdReceiverTest.php

+11-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
use Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\BeanstalkdReceivedStamp;
1717
use Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\BeanstalkdReceiver;
1818
use Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\Connection;
19+
use Symfony\Component\Messenger\Envelope;
1920
use Symfony\Component\Messenger\Exception\MessageDecodingFailedException;
21+
use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
2022
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
2123
use Symfony\Component\Messenger\Transport\Serialization\Serializer;
2224
use Symfony\Component\Serializer as SerializerComponent;
@@ -39,14 +41,21 @@ public function testItReturnsTheDecodedMessageToTheHandler()
3941
$receiver = new BeanstalkdReceiver($connection, $serializer);
4042
$actualEnvelopes = $receiver->get();
4143
$this->assertCount(1, $actualEnvelopes);
42-
$this->assertEquals(new DummyMessage('Hi'), $actualEnvelopes[0]->getMessage());
44+
/** @var Envelope $actualEnvelope */
45+
$actualEnvelope = $actualEnvelopes[0];
46+
$this->assertEquals(new DummyMessage('Hi'), $actualEnvelope->getMessage());
4347

4448
/** @var BeanstalkdReceivedStamp $receivedStamp */
45-
$receivedStamp = $actualEnvelopes[0]->last(BeanstalkdReceivedStamp::class);
49+
$receivedStamp = $actualEnvelope->last(BeanstalkdReceivedStamp::class);
4650

4751
$this->assertInstanceOf(BeanstalkdReceivedStamp::class, $receivedStamp);
4852
$this->assertSame('1', $receivedStamp->getId());
4953
$this->assertSame($tube, $receivedStamp->getTube());
54+
55+
/** @var TransportMessageIdStamp $transportMessageIdStamp */
56+
$transportMessageIdStamp = $actualEnvelope->last(TransportMessageIdStamp::class);
57+
$this->assertNotNull($transportMessageIdStamp);
58+
$this->assertSame('1', $transportMessageIdStamp->getId());
5059
}
5160

5261
public function testItReturnsEmptyArrayIfThereAreNoMessages()

src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php

+11-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\Connection;
1818
use Symfony\Component\Messenger\Envelope;
1919
use Symfony\Component\Messenger\Stamp\DelayStamp;
20+
use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
2021
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
2122

2223
final class BeanstalkdSenderTest extends TestCase
@@ -27,13 +28,21 @@ public function testSend()
2728
$encoded = ['body' => '...', 'headers' => ['type' => DummyMessage::class]];
2829

2930
$connection = $this->createMock(Connection::class);
30-
$connection->expects($this->once())->method('send')->with($encoded['body'], $encoded['headers'], 0);
31+
$connection->expects($this->once())->method('send')
32+
->with($encoded['body'], $encoded['headers'], 0)
33+
->willReturn('1')
34+
;
3135

3236
$serializer = $this->createMock(SerializerInterface::class);
3337
$serializer->method('encode')->with($envelope)->willReturn($encoded);
3438

3539
$sender = new BeanstalkdSender($connection, $serializer);
36-
$sender->send($envelope);
40+
$actualEnvelope = $sender->send($envelope);
41+
42+
/** @var TransportMessageIdStamp $transportMessageIdStamp */
43+
$transportMessageIdStamp = $actualEnvelope->last(TransportMessageIdStamp::class);
44+
$this->assertNotNull($transportMessageIdStamp);
45+
$this->assertSame('1', $transportMessageIdStamp->getId());
3746
}
3847

3948
public function testSendWithDelay()

src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdReceiver.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Component\Messenger\Envelope;
1515
use Symfony\Component\Messenger\Exception\LogicException;
1616
use Symfony\Component\Messenger\Exception\MessageDecodingFailedException;
17+
use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
1718
use Symfony\Component\Messenger\Transport\Receiver\MessageCountAwareInterface;
1819
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
1920
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
@@ -52,7 +53,10 @@ public function get(): iterable
5253
throw $exception;
5354
}
5455

55-
return [$envelope->with(new BeanstalkdReceivedStamp($beanstalkdEnvelope['id'], $this->connection->getTube()))];
56+
return [$envelope->with(
57+
new BeanstalkdReceivedStamp($beanstalkdEnvelope['id'], $this->connection->getTube()),
58+
new TransportMessageIdStamp($beanstalkdEnvelope['id'])
59+
)];
5660
}
5761

5862
public function ack(Envelope $envelope): void

src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/BeanstalkdSender.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Symfony\Component\Messenger\Envelope;
1515
use Symfony\Component\Messenger\Stamp\DelayStamp;
16+
use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp;
1617
use Symfony\Component\Messenger\Transport\Sender\SenderInterface;
1718
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
1819
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
@@ -39,8 +40,8 @@ public function send(Envelope $envelope): Envelope
3940
$delayStamp = $envelope->last(DelayStamp::class);
4041
$delayInMs = null !== $delayStamp ? $delayStamp->getDelay() : 0;
4142

42-
$this->connection->send($encodedMessage['body'], $encodedMessage['headers'] ?? [], $delayInMs);
43+
$id = $this->connection->send($encodedMessage['body'], $encodedMessage['headers'] ?? [], $delayInMs);
4344

44-
return $envelope;
45+
return $envelope->with(new TransportMessageIdStamp($id));
4546
}
4647
}

src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineReceiverTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public function testItReturnsTheDecodedMessageToTheHandler()
4545
$this->assertCount(1, $actualEnvelopes);
4646
/** @var Envelope $actualEnvelope */
4747
$actualEnvelope = $actualEnvelopes[0];
48-
$this->assertEquals(new DummyMessage('Hi'), $actualEnvelopes[0]->getMessage());
48+
$this->assertEquals(new DummyMessage('Hi'), $actualEnvelope->getMessage());
4949

5050
/** @var DoctrineReceivedStamp $doctrineReceivedStamp */
5151
$doctrineReceivedStamp = $actualEnvelope->last(DoctrineReceivedStamp::class);

src/Symfony/Component/Messenger/Bridge/Redis/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
/**

src/Symfony/Component/Messenger/Bridge/Redis/Transport/RedisReceiver.php

+5-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,10 @@ public function get(): iterable
7677
throw $exception;
7778
}
7879

79-
return [$envelope->with(new RedisReceivedStamp($message['id']))];
80+
return [$envelope->with(
81+
new RedisReceivedStamp($message['id']),
82+
new TransportMessageIdStamp($message['id'])
83+
)];
8084
}
8185

8286
public function ack(Envelope $envelope): void

0 commit comments

Comments
 (0)