From 28d23af5d0a5f7ddaf63ab7c0cef3460875b80de Mon Sep 17 00:00:00 2001 From: Thomas Calvet Date: Fri, 4 Feb 2022 18:06:06 +0100 Subject: [PATCH] [Messenger] Retain correlation id from \AmqpEnvelope when retrying a message --- .../Messenger/Tests/Transport/AmqpExt/AmqpStampTest.php | 9 ++++++++- .../Component/Messenger/Transport/AmqpExt/AmqpStamp.php | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpStampTest.php b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpStampTest.php index 732be411c1474..14fc7c14d0fff 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpStampTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/AmqpExt/AmqpStampTest.php @@ -42,6 +42,7 @@ public function testCreateFromAmqpEnvelope() $amqpEnvelope->method('getDeliveryMode')->willReturn(2); $amqpEnvelope->method('getPriority')->willReturn(5); $amqpEnvelope->method('getAppId')->willReturn('appid'); + $amqpEnvelope->method('getCorrelationId')->willReturn('foo'); $stamp = AmqpStamp::createFromAmqpEnvelope($amqpEnvelope); @@ -49,6 +50,7 @@ public function testCreateFromAmqpEnvelope() $this->assertSame($amqpEnvelope->getDeliveryMode(), $stamp->getAttributes()['delivery_mode']); $this->assertSame($amqpEnvelope->getPriority(), $stamp->getAttributes()['priority']); $this->assertSame($amqpEnvelope->getAppId(), $stamp->getAttributes()['app_id']); + $this->assertSame($amqpEnvelope->getCorrelationId(), $stamp->getAttributes()['correlation_id']); $this->assertSame(\AMQP_NOPARAM, $stamp->getFlags()); } @@ -59,8 +61,12 @@ public function testCreateFromAmqpEnvelopeWithPreviousStamp() $amqpEnvelope->method('getDeliveryMode')->willReturn(2); $amqpEnvelope->method('getPriority')->willReturn(5); $amqpEnvelope->method('getAppId')->willReturn('appid'); + $amqpEnvelope->method('getCorrelationId')->willReturn('foo'); - $previousStamp = new AmqpStamp('otherroutingkey', \AMQP_MANDATORY, ['priority' => 8]); + $previousStamp = new AmqpStamp('otherroutingkey', \AMQP_MANDATORY, [ + 'priority' => 8, + 'correlation_id' => 'bar', + ]); $stamp = AmqpStamp::createFromAmqpEnvelope($amqpEnvelope, $previousStamp); @@ -68,6 +74,7 @@ public function testCreateFromAmqpEnvelopeWithPreviousStamp() $this->assertSame($amqpEnvelope->getDeliveryMode(), $stamp->getAttributes()['delivery_mode']); $this->assertSame(8, $stamp->getAttributes()['priority']); $this->assertSame($amqpEnvelope->getAppId(), $stamp->getAttributes()['app_id']); + $this->assertSame('bar', $stamp->getAttributes()['correlation_id']); $this->assertSame(\AMQP_MANDATORY, $stamp->getFlags()); } } diff --git a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpStamp.php b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpStamp.php index 9b0aeb31ddc09..85c6074a1d224 100644 --- a/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpStamp.php +++ b/src/Symfony/Component/Messenger/Transport/AmqpExt/AmqpStamp.php @@ -61,6 +61,7 @@ public static function createFromAmqpEnvelope(\AMQPEnvelope $amqpEnvelope, self $attr['expiration'] = $attr['expiration'] ?? $amqpEnvelope->getExpiration(); $attr['type'] = $attr['type'] ?? $amqpEnvelope->getType(); $attr['reply_to'] = $attr['reply_to'] ?? $amqpEnvelope->getReplyTo(); + $attr['correlation_id'] = $attr['correlation_id'] ?? $amqpEnvelope->getCorrelationId(); return new self($previousStamp->routingKey ?? $amqpEnvelope->getRoutingKey(), $previousStamp->flags ?? \AMQP_NOPARAM, $attr); }