第5章 設定オプション
本章では、AMQ JMS で利用可能な設定オプションについて説明します。
JMS 設定オプションは、接続 URI でクエリーパラメーターとして設定されます。詳細は、「「接続 URI」」を参照してください。
5.1. JMS オプション
これらのオプションは、Connection
、Session
、MessageConsumer
、MessageProducer
などの JMS オブジェクトの動作を制御します。
- jms.username
- クライアントが接続を認証するために使用するユーザー名。
- jms.password
- クライアントが接続を認証するために使用するパスワード。
- jms.clientID
- クライアントが接続に適用するクライアント ID。
- jms.forceAsyncSend
-
有効にすると、
MessageProducer
からのすべてのメッセージが非同期に送信されます。それ以外の場合、非永続メッセージやトランザクション内のメッセージなど、特定の種類のみが非同期で送信されます。これはデフォルトでは無効にされます。 - jms.forceSyncSend
-
有効にすると、
MessageProducer
からのすべてのメッセージが同期的に送信されます。これはデフォルトでは無効にされます。 - jms.forceAsyncAcks
- 有効にすると、すべてのメッセージ承認は非同期で送信されます。これはデフォルトでは無効にされます。
- jms.localMessageExpiry
-
有効にすると、
MessageConsumer
が受信した期限切れのメッセージはフィルターされ、配信されません。これは、デフォルトで有効になっています。 - jms.localMessagePriority
- 有効にすると、事前にフェッチされたメッセージはメッセージの優先度の値に基づいてローカルで並べ替えられます。これはデフォルトでは無効にされます。
- jms.validatePropertyNames
- 有効にすると、メッセージプロパティー名が有効な Java 識別子である必要があります。これは、デフォルトで有効になっています。
- jms.receiveLocalOnly
-
有効になっている場合、timeout 引数を指定して
receive
する呼び出しは、コンシューマーのローカルメッセージバッファーのみをチェックします。タイムアウトが期限切れになると、リモートピアをチェックして、メッセージがないことを確認します。これはデフォルトでは無効にされます。 - jms.receiveNoWaitLocalOnly
-
有効になっている場合、
receiveNoWait
の呼び出しは、コンシューマーのローカルメッセージバッファーのみをチェックします。それ以外の場合は、リモートピアをチェックして、使用可能なメッセージが実際にないことを確認します。これはデフォルトでは無効にされます。 - jms.queuePrefix
-
Session
から作成されるQueue
の名前に追加される任意の接頭辞値。 - jms.topicPrefix
-
Session
から作成されるTopic
の名前に追加される任意の接頭辞値。 - jms.closeTimeout
- 返される前にクライアントが通常のリソースクリップを待つ時間 (ミリ秒単位)。デフォルトは 60000 (60 秒) です。
- jms.connectTimeout
- エラーを返す前にクライアントが接続確立を待つ時間 (ミリ秒単位)。デフォルトは 15000 (15 秒) です。
- jms.sendTimeout
- エラーを返す前に、クライアントが 同期メッセージの送信 の完了を待つ時間 (ミリ秒単位)。デフォルトでは、クライアントは送信が完了するまで無期限に待機します。
- jms.requestTimeout
- エラーを返す前に、リモートピアでプロデューサーまたはコンシューマー (送信を除く) を開くなど、さまざまな同期インタラクション が完了するまでクライアントが待機する時間 (ミリ秒単位)。デフォルトでは、クライアントはリクエストが完了するまで無期限に待機します。
- jms.clientIDPrefix
-
ConnectionFactory
によって新しいConnection
が作成されると、クライアント ID 値を生成するために使用されるオプションの接頭辞値。デフォルトはID:
です。 - jms.connectionIDPrefix
-
ConnectionFactory
によって新しいConnection
が作成されると、接続 ID 値を生成するために使用されるオプションの接頭辞値。この接続 ID はConnection
オブジェクトから一部の情報をログに記録する際に使用されるため、設定可能な接頭辞によりログのブレッドをより容易にすることができます。デフォルトはID:
です。 - jms.populateJMSXUserID
-
有効にすると、接続から認証済みユーザー名を使用して、送信された各メッセージの
JMSXUserID
プロパティーを設定します。これはデフォルトでは無効にされます。 - jms.awaitClientID
- 有効にすると、URI で設定されたクライアント ID のない接続は、クライアント ID がプログラム的に設定されるまで待機するか、AMQP コネクション「open」を送信する前に何も設定できないことの確認を行います。これは、デフォルトで有効になっています。
- jms.useDaemonThread
- 有効にすると、コネクションはデーモン以外のスレッドではなく、エグゼキューターにデーモンスレッドを使用します。これはデフォルトでは無効にされます。
- jms.tracing
-
トレースプロバイダーの名前。サポートされる値は
opentracing
およびnoop
です。デフォルトはnoop
です。
Prefetch ポリシーオプション
Prefetch ポリシーは、各 MessageConsumer
がリモートピアから取得し、ローカルの「prefetch」バッファーに保持するメッセージの数を決定します。
- jms.prefetchPolicy.queuePrefetch
- デフォルトは 1000 です。
- jms.prefetchPolicy.topicPrefetch
- デフォルトは 1000 です。
- jms.prefetchPolicy.queueBrowserPrefetch
- デフォルトは 1000 です。
- jms.prefetchPolicy.durableTopicPrefetch
- デフォルトは 1000 です。
- jms.prefetchPolicy.all
- これは、すべての事前にフェッチされた値を一度に設定するために使用できます。
prefetch の値は、キューまたは共有サブスクリプションの複数のコンシューマーへのメッセージの分散に影響します。値が大きいと、各コンシューマーに一度に送信されるバッチが大きくなる可能性があります。より均等にラウンドロビンの分散を実現するには、小さい値を使用します。
再配信ポリシーオプション
再配信ポリシーは、クライアント上で再配信されたメッセージの処理方法を制御します。
- jms.redeliveryPolicy.maxRedeliveries
- 受信メッセージが再配信された回数に基づいて拒否されるタイミングを制御します。値が 0 の場合は、メッセージの再配信が許可されないことを示します。値が 5 の場合、メッセージを 5 回再送することができます。デフォルトは -1 で、無制限を意味します。
- jms.redeliveryPolicy.outcome
-
設定された maxRedeliveries 値を超過した後にメッセージに適用される結果を制御します。サポートされる値は
ACCEPTED
、REJECTED
、RELEASED
、MODIFIED_FAILED
、およびMODIFIED_FAILED_UNDELIVERABLE
です。デフォルト値はMODIFIED_FAILED_UNDELIVERABLE
です。
メッセージ ID ポリシーオプション
メッセージ ID ポリシーは、クライアントから送信されたメッセージに割り当てられたメッセージ ID のデータタイプを制御します。
- jms.messageIDPolicy.messageIDType
-
デフォルトでは、生成された
String
値は送信メッセージのメッセージ ID に使用されます。その他の利用可能なタイプは、UUID
、UUID_STRING
、およびPREFIXED_UUID_STRING
です。
Presettle ポリシーオプション
Presettle ポリシーは、AMQP の事前設定されたメッセージングセマンティクスを使用するように設定されているプロデューサーまたはコンシューマーインスタンスが設定されたタイミングを制御します。
- jms.presettlePolicy.presettleAll
- 有効にすると、作成されたプロデューサーおよび非トランザクションコンシューマーはすべて、事前設定モードで動作します。これはデフォルトでは無効にされます。
- jms.presettlePolicy.presettleProducers
- 有効にすると、すべてのプロデューサーが事前設定モードで動作します。これはデフォルトでは無効にされます。
- jms.presettlePolicy.presettleTopicProducers
-
有効にすると、
Topic
またはTemporaryTopic
宛に送信されるプロデューサーは事前設定モードで動作します。これはデフォルトでは無効にされます。 - jms.presettlePolicy.presettleQueueProducers
-
有効にすると、
Queue
またはTemporaryQueue
宛に送信されるプロデューサーは事前設定モードで動作します。これはデフォルトでは無効にされます。 - jms.presettlePolicy.presettleTransactedProducers
-
有効な場合、トランザクション
Session
で作成されたプロデューサーは事前設定モードで動作します。これはデフォルトでは無効にされます。 - jms.presettlePolicy.presettleConsumers
- 有効にすると、すべてのコンシューマーは事前に設定されたモードで動作します。これはデフォルトでは無効にされます。
- jms.presettlePolicy.presettleTopicConsumers
-
有効にすると、
Topic
またはTemporaryTopic
宛から受信されたコンシューマーはすべて、事前設定モードで動作します。これはデフォルトでは無効にされます。 - jms.presettlePolicy.presettleQueueConsumers
-
有効にすると、
Queue
またはTemporaryQueue
宛から受信されるコンシューマーは事前設定モードで動作します。これはデフォルトでは無効にされます。
デシリアライズポリシーオプション
デシリアライズポリシーは、シリアライズされた Java Object
コンテンツで構成される受信 ObjectMessage
からボディーを取得しつつ、どの Java タイプをオブジェクトストリームからデシリアライズするかを制御する手段を提供します。デフォルトでは、ボディーのデシリアライズの試行時にすべてのタイプが信頼されます。デフォルトのデシリアライズポリシーは、ホワイトリストと Java クラスまたはパッケージ名のブラックリストを指定できるようにする URI オプションを提供します。
- jms.deserializationPolicy.whiteList
-
ObjectMessage
のコンテンツをデシリアライズする際に許可されるクラス名のコンマ区切りリスト (blackList
によって上書きされない限り)。このリストの名前はパターンの値ではありません。java.util.Map
またはjava.util
にあるように、正確なクラスまたはパッケージ名を設定する必要があります。パッケージの一致には、サブパッケージが含まれます。デフォルトではすべてを許可します。 - jms.deserializationPolicy.blackList
-
ObjectMessage
の内容をデシリアライズする際に拒否されるべきであるクラス名とパッケージ名のコンマ区切りリスト。このリストの名前はパターンの値ではありません。java.util.Map
またはjava.util
にあるように、正確なクラスまたはパッケージ名を設定する必要があります。パッケージの一致には、サブパッケージが含まれます。デフォルトでは、none が回避されます。