8.3. 高速コンシューマーの対処
高速コンシューマーは、メッセージを消費するのと同じ速さでメッセージを処理することができます。メッセージングシステムのコンシューマーが高速であると確信できる場合は、ウィンドウサイズを -1 に設定することを検討してください。ウィンドウサイズをこの値に設定すると、クライアントでバインドされていないメッセージのバッファリングが可能になります。ただし、この設定には注意が必要です。コンシューマーがメッセージの受信と同時に処理できない場合、クライアントのメモリーがオーバーフローする可能性があります。
高速コンシューマーのウィンドウサイズの設定
以下の例は、メッセージの高速コンシューマーである AMQ Core Protocol JMS クライアントを使用する場合に、ウィンドウサイズを -1 に設定する方法を示しています。
手順
クライアントが JNDI を使用して接続ファクトリーをインスタンス化する場合は、接続文字列 URL の一部として
consumerWindowSize
パラメーターを含めます。JNDI コンテキスト環境内に URL を格納します。以下の例では、jndi.properties
ファイルを使用して URL を格納します。java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory connectionFactory.myConnectionFactory=tcp://localhost:61616?consumerWindowSize=-1
クライアントが JNDI を使用して接続ファクトリーをインスタンス化しない場合は、値を
ActiveMQConnectionFactory.setConsumerWindowSize()
に渡します。ConnectionFactory cf = ActiveMQJMSClient.createConnectionFactory(...) cf.setConsumerWindowSize(-1);