From 5aa86a5497e413742dcd2d6ad16379947f6b0738 Mon Sep 17 00:00:00 2001 From: Fedor Ortyanov Date: Thu, 10 Mar 2022 15:56:56 +0300 Subject: [PATCH 1/3] runs consumer reconnection by any rabbit error --- channel.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/channel.go b/channel.go index aee8515..3d66c75 100644 --- a/channel.go +++ b/channel.go @@ -59,8 +59,7 @@ func (chManager *channelManager) startNotifyCancelOrClosed() { select { case err := <-notifyCloseChan: - // If the connection close is triggered by the Server, a reconnection takes place - if err != nil && err.Server { + if err != nil { chManager.logger.Printf("attempting to reconnect to amqp server after close") chManager.reconnectWithBackoff() chManager.logger.Printf("successfully reconnected to amqp server after close") From b5f77f7716dbf26ca9ae56fc16f1ff4efd72d563 Mon Sep 17 00:00:00 2001 From: Fedor Ortyanov Date: Tue, 15 Mar 2022 16:32:45 +0300 Subject: [PATCH 2/3] runs consumer reconnection by amqp EOF error --- channel.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/channel.go b/channel.go index 3d66c75..06e77bf 100644 --- a/channel.go +++ b/channel.go @@ -59,11 +59,20 @@ func (chManager *channelManager) startNotifyCancelOrClosed() { select { case err := <-notifyCloseChan: - if err != nil { + if err != nil && err.Server { chManager.logger.Printf("attempting to reconnect to amqp server after close") chManager.reconnectWithBackoff() chManager.logger.Printf("successfully reconnected to amqp server after close") chManager.notifyCancelOrClose <- err + } else if err != nil && err.Reason == "EOF" { + chManager.logger.Printf("attempting to reconnect to amqp server after eof") + chManager.reconnectWithBackoff() + chManager.logger.Printf("successfully reconnected to amqp server after eof") + chManager.notifyCancelOrClose <- err + } else if err != nil { + chManager.logger.Printf("not attempting to reconnect to amqp server because closure was initiated by the client") + } else if err == nil { + chManager.logger.Printf("amqp channel closed gracefully") } case err := <-notifyCancelChan: chManager.logger.Printf("attempting to reconnect to amqp server after cancel") From c615570a4a400ecb22d79af926085cba47eda85c Mon Sep 17 00:00:00 2001 From: Fedor Ortyanov Date: Tue, 15 Mar 2022 17:05:28 +0300 Subject: [PATCH 3/3] merged with main --- channel.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/channel.go b/channel.go index d869db0..93643fb 100644 --- a/channel.go +++ b/channel.go @@ -68,7 +68,7 @@ func (chManager *channelManager) startNotifyCancelOrClosed() { chManager.notifyCancelOrClose <- err } else if err != nil && err.Reason == "EOF" { chManager.logger.Printf("attempting to reconnect to amqp server after eof") - chManager.reconnectWithBackoff() + chManager.reconnectLoop() chManager.logger.Printf("successfully reconnected to amqp server after eof") chManager.notifyCancelOrClose <- err } else if err != nil {