2017-04-20 13 views
0

私は私のサービスでメッセージングにrabbitmqを使用しています。 2つのマイクロサービスAとBがあるとします。rabbitmq:メッセージはコンシューマによって消費されませんが、パブリッシャはメッセージを公開できます

さらに3つの交換があり、それぞれのキューがその間にあります。

Aは出版社であり、Bはここに消費者である。 Aからメッセージを送信している間は、キューに正常に更新されています(コンソールキューに表示されることが増えます)。しかし、ここでは消費者はメッセージを受け取ることができません。以前はそれが働いていました。

しかし、他の交換やキューでは、消費者はうまく動作しています。

私はキューを消去してアプリケーションを再起動しようとしましたが、私は助けませんでした。待ち行列には常に4つの未処理メッセージがあり、残りは実行準備ができています。最後に私はキューと交換とそれぞれのルーティングキーを削除し、同じを再作成しました。すべて正常に動作しています。

私はここで何が起こったのか教えてください。それはなぜ働かなかったのですか?

+0

このような問題は、一般的にユーザーコードのどこかに立ち往生したスレッドによって引き起こされます。次回は、スレッドが何をしているのかを確認するためにスレッドダンプを取る。 –

+0

コメントありがとう@GaryRussell ..リスナーのためのスレッドは、コスチューム2-3のメッセージであり、リスニングを止めました。その状態は、実行可能です..しかし、それは死んでいるように振る舞います:P ..次回は世話をするでしょう –

答えて

0

メッセージ処理に何らかの障害が発生した場合、エラーが発生した場合があります。メソッドがエラーをスローし続けるなら、無限ループ(キュー - >処理 - >キュー> .....)に入ります。すべては、我々は他を実行できるバッチ並行性を増やすことで、キューにある他のメッセージのための

。しかし未確認のメッセージは

...誰かが消費者を停止した場合there.thatだけ行くだろう今私は一つの質問私はunackedメッセージ処理のための制限の再試行を設定することができますがあります。ある人がそれを知っているなら、ここで助けてくれるでしょう。

関連する問題