11

についてのドキュメントを読みました。prefetch buffer私の理解では、Prefetchコンシューマ A に値 =1 を割り当てると、Activemq は一度に 1 つのメッセージを A にプッシュします。

私の疑問は、消費者にプリフェッチ値を割り当てる必要がある場所でした。

コンシューマープログラムでプリフェッチ値を割り当てる必要がありますか?それが正しい場合、簡単なコードで説明できますか?

ありがとう。

4

2 に答える 2

12

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);
于 2013-09-05T11:13:00.697 に答える