在Go 腳本中研究RABBITMQ 死鎖偵測
使用者遇到了一個問題,即使用streadway/amqp 庫的Go 消費者腳本仍然沒有回應RabbitMQ 伺服器關閉,伺服器重新啟動後訊息仍未傳送。這就引出了一個問題:我們如何偵測失效的消費者連線並重新連接或終止消費者腳本?
為了破解這一點,我們深入研究了庫中的心跳機制。預設情況下,心跳間隔設定為 10 秒。但是,此心跳功能未在 API 中公開,因此無法明確使用。
相反,建議的方法是利用 amqp.Connection 的 NotifyClose() 方法,該方法傳回通道訊號傳輸或協定錯誤。透過創建一個循環來不斷重新連接,我們可以確保我們的消費者保持活躍並回應伺服器變更。
此方法的範例實作如下:
透過合併此方法錯誤處理機制,我們的消費者腳本即使在動態伺服器環境中也可以優雅地處理連線中斷並確保連續的消息傳遞。
以上是Go 腳本如何偵測 RabbitMQ 死鎖並從中恢復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!