8.4. 低速なコンシューマーの処理
低速なコンシューマーは、各メッセージを処理するのにかなり時間がかかります。このような場合、クライアントでメッセージをバッファーすることは推奨されません。メッセージはブローカーに残り、他のコンシューマーによって消費されます。バッファーをオフにする利点の 1 つは、キュー上の複数のコンシューマー間で確定的な分散を提供することです。クライアント側のバッファーを無効にして低速なコンシューマーを処理するには、ウィンドウサイズを 0 に設定します。
低速なコンシューマーのウィンドウサイズの設定
以下の例は、メッセージの低速なコンシューマーである Core JMS クライアントを使用する場合に、ウィンドウサイズを 0 に設定する方法を示しています。
手順
クライアントが JNDI を使用して接続ファクトリーをインスタンス化する場合は、connection string URL の一部として
consumerWindowSize
パラメーターを含めます。JNDI コンテキスト環境内に URL を保存します。以下の例では、jndi.properties
ファイルを使用して URL を保存します。java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory connectionFactory.myConnectionFactory=tcp://localhost:61616?consumerWindowSize=0
クライアントが JNDI を使用して接続ファクトリーをインスタンス化しない場合は、値を
ActiveMQConnectionFactory.setConsumerWindowSize()
に渡します。ConnectionFactory cf = ActiveMQJMSClient.createConnectionFactory(...) cf.setConsumerWindowSize(0);
関連情報
低速なコンシューマーを処理する場合にコンシューマーをバッファーしないようにブローカーを設定する方法を示す例は、<install-dir>/examples/standard
の no-consumer-buffering
の例を参照してください。