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

Skip to content

Commit 056b4a5

Browse files
committed
[Messenger] AMQP:Automatically reconnect on connection loss
1 parent 17c5508 commit 056b4a5

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/Symfony/Component/Messenger/Bridge/Amqp/Transport/AmqpReceiver.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,16 @@ private function getEnvelope(string $queueName): iterable
5252
{
5353
try {
5454
$amqpEnvelope = $this->connection->get($queueName);
55+
} catch (\AMQPConnectionException) {
56+
// Try to reconnect once to accommodate need for one of the nodes in cluster needing to stop serving the
57+
// traffic. This may happen for example when one of the nodes in cluster is going into maintenance node.
58+
// see https://github.com/php-amqplib/php-amqplib/issues/1161
59+
try {
60+
$this->connection->queue($queueName)->getConnection()->reconnect();
61+
$amqpEnvelope = $this->connection->get($queueName);
62+
} catch (\AMQPException $exception) {
63+
throw new TransportException($exception->getMessage(), 0, $exception);
64+
}
5565
} catch (\AMQPException $exception) {
5666
throw new TransportException($exception->getMessage(), 0, $exception);
5767
}

0 commit comments

Comments
 (0)