についてのドキュメントを読みました。prefetch buffer
私の理解では、Prefetch
コンシューマ A に値 =1 を割り当てると、Activemq は一度に 1 つのメッセージを A にプッシュします。
私の疑問は、消費者にプリフェッチ値を割り当てる必要がある場所でした。
コンシューマープログラムでプリフェッチ値を割り当てる必要がありますか?それが正しい場合、簡単なコードで説明できますか?
ありがとう。
ActiveMQマニュアルに従って:
ActiveMQ は、任意の時点でコンシューマーにストリーミングできるメッセージの数にプリフェッチ制限を使用します。プリフェッチ制限に達すると、コンシューマーがメッセージの確認応答の返信を開始するまで (メッセージが処理されたことを示すため)、それ以上のメッセージはコンシューマーにディスパッチされません。実際のプリフェッチ制限値は、コンシューマーごとに指定できます。
すべてのコンシューマー タイプのプリフェッチ サイズを変更するには、次のような接続 URI を使用します。
tcp://localhost:61616?jms.prefetchPolicy.all=50
キュー コンシューマ タイプだけのプリフェッチ サイズを変更するには、次のような接続 URI を使用します。
tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1
また、Destination Options を使用して、コンシューマーごとに構成することもできます。
queue = new ActiveMQQueue("TEST.QUEUE?consumer.prefetchSize=10");
consumer = session.createConsumer(queue);