2017-04-20 216 views
0

我正在使用rabbitmq在我的服務中進行消息傳遞。假設有2個微服務A和B.rabbitmq:消息不被消費者使用,但發佈者能夠發佈消息

還有更多3個交換和相應的隊列之間存在。

A是出版商,B是這裏的消費者。當從A發送消息時,它正在隊列中成功更新(能夠在控制檯隊列中看到正在增加)。但是這裏消費者不能接收消息。以前它工作。

但是對於其他交換和排隊,消費者工作正常。

我試圖清除隊列並重新啓動應用程序,沒有幫助我。在隊列中總是有4條未被存取的消息,並且休息已準備就緒。最後我刪除了隊列並交換了相應的路由鍵並重新創建了相同的路由。那麼所有的工作很好..

任何人可以幫助我在這裏發生了什麼事情。爲什麼它沒有奏效?

+0

這樣的問題通常是由於線程停留在用戶代碼中的某處造成的。下一次,通過線程轉儲來查看線程正在做什麼。 –

+0

感謝評論@GaryRussell ..聽衆的線程是cosumes 2-3消息,並停止收聽。它的狀態顯示,它是可運行的,但表現得像死了一樣:P ..下次我會照顧 –

回答

0

有時候,當消息處理髮生某些故障時,如果我們拋出錯誤。它會在那裏進行無限循環(隊列 - >處理 - >隊列> .....),如果方法保持拋出錯誤。

對於所有隊列中的其他消息,通過增加批處理併發性,我們可以執行另一個。但unack消息將在那裏。這將只會去如果有人停止消費..

現在我有一個問題,我可以設置限制重試未處理的消息處理。如果有人知道它,那麼可以在這裏幫助。

相關問題