Spring で構成された ActiveMQ を使用し、prefetch=0 の connectionFactory と 5-5 の同時実行性で構成されたリスナーを使用すると、予想どおり、ブローカーがメッセージをプッシュするのではなく、リスナーが新しいメッセージをポーリングしているように見えます。
ただし、キューの「アクティブ リスナー」の ActiveMQ Web コンソールでは、「エンキュー」列の数が急速に (毎秒約 1 つ) 増え続けていることがわかります。これは正常な動作ですか?prefetch=0 になったので、これは新しいメッセージのリスナーの各ポーリングを反映しているだけですか? 処理中の実際のメッセージがないのに、キューの Enqueue カウントが増加しているのは少し奇妙に思えます。また、ポーリングの頻度を調整する方法があるかどうか、または各コンシューマがブローカーに新しいメッセージをポーリングする前に遅延を設ける方法があるかどうかも疑問に思っていました.
動作するメッセージがない場合でも、prefetch=0 で各コンシューマのエンキュー カウントが増加し続けることを示すコンソールの写真:
http://activemq.2283324.n4.nabble.com/file/n4666021/enqueues.png