11

SSLトランスポートを使用するactiveMQブローカーがあります。ブローカーを使用している消費者は約10人います。ルートを設定するためにラクダを使用しています。

キューに保留中のメッセージがある場合でも、コンシューマーを再起動しても、ハングアップして新しいメッセージを消費しないことがよくあります。

私は、問題を再現しようとして、一度に1つずつ消費者をステップスルーすることにより、これが発生している場所を特定しようとし始めました。私はついに問題を再現できる消費者にたどり着きました。しばらくするとハングしますが、アクティブなMQ管理コンソールに移動してキュー内のメッセージを表示しようとすると、再び実行が開始されます。Jettyが接続を引き起こして、Webページのキューを更新しているため、私が抱えているスレッドの問題のブロックが解除されていると思います。これをどのようにデバッグする必要がありますか?

ありがとう

4

3 に答える 3

8

私の同僚が何か面白いものに出くわしました、そして私はちょうどインターネットで説明を見つけました:http: //activemq.2283324.n4.nabble.com/Consumer-is-not-able-to-pick-messages-from-queue -td2531722.html

どうやら、セレクターがあり、すべてのメッセージが同じキューにある場合にいっぱいになる可能性のあるページサイズがあります。これは私たちのために起こっていました-私はコンシューマーを開始していなかったので、別のコンシューマーのセレクターを含むメッセージの全ページが表示され、実行中のコンシューマーは追加の作業を送信できませんでした。

于 2012-04-19T15:48:36.363 に答える
1

キューのプリフェッチを1に設定して、コンシューマー間での分散を促進し、特定のコンシューマーでの「スタック」メッセージを減らしてください。

http://activemq.apache.org/what-is-the-prefetch-limit-for.htmlを参照してください

于 2012-04-07T15:33:26.883 に答える
0

手遅れですが、同じ問題が発生しました。問題は、キューから物を取り除くために使用していたのと同じ接続を使用して、キューに物を追加しようとしたことでした。

それらを分離すると(1つは生成用、もう1つは消費用の2つの完全に異なるコンテキスト)、問題は自然に解決しました。

于 2014-11-20T23:16:56.320 に答える