Skip to content

Commit 5a9e4d2

Browse files
KonstantinCodesweaverryan
authored andcommitted
Add InteropMessageStamp
1 parent b7d0de3 commit 5a9e4d2

File tree

2 files changed

+42
-7
lines changed

2 files changed

+42
-7
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Enqueue\MessengerAdapter\EnvelopeItem;
4+
5+
use Interop\Queue\Message;
6+
use Symfony\Component\Messenger\Stamp\StampInterface;
7+
8+
final class InteropMessageStamp implements StampInterface
9+
{
10+
/** @var Message */
11+
private $message;
12+
13+
public function __construct(Message $message)
14+
{
15+
$this->message = $message;
16+
}
17+
18+
public function getMessage(): Message
19+
{
20+
return $this->message;
21+
}
22+
}

QueueInteropTransport.php

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Enqueue\AmqpTools\DelayStrategyAware;
1515
use Enqueue\AmqpTools\RabbitMqDelayPluginDelayStrategy;
1616
use Enqueue\AmqpTools\RabbitMqDlxDelayStrategy;
17+
use Enqueue\MessengerAdapter\EnvelopeItem\InteropMessageStamp;
1718
use Interop\Queue\Consumer;
1819
use Symfony\Component\Messenger\Envelope;
1920
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
@@ -77,13 +78,18 @@ public function get(): iterable
7778
throw $e;
7879
}
7980

80-
return array(
81-
$this->serializer->decode(array(
82-
'body' => $interopMessage->getBody(),
83-
'headers' => $interopMessage->getHeaders(),
84-
'properties' => $interopMessage->getProperties(),
85-
)),
86-
);
81+
/** @var Envelope $envelope */
82+
$envelope = $this->serializer->decode(array(
83+
'body' => $interopMessage->getBody(),
84+
'headers' => $interopMessage->getHeaders(),
85+
'properties' => $interopMessage->getProperties(),
86+
));
87+
88+
if ($envelope) {
89+
$envelope = $envelope->with(new InteropMessageStamp($interopMessage));
90+
}
91+
92+
return array($envelope);
8793
}
8894

8995
/**
@@ -217,6 +223,13 @@ private function setMessageMetadata(Message $interopMessage, Envelope $envelope)
217223

218224
private function encodeMessage(Envelope $envelope): Message
219225
{
226+
/** @var InteropMessageStamp $interopStamp */
227+
$interopStamp = $envelope->last(InteropMessageStamp::class);
228+
229+
if ($interopStamp) {
230+
return $interopStamp->getMessage();
231+
}
232+
220233
$context = $this->contextManager->context();
221234
$encodedMessage = $this->serializer->encode($envelope);
222235

0 commit comments

Comments
 (0)