第5章 SSL 設定オプション

本章では、AMQ JMS で利用可能な設定オプションについて説明します。

JMS 設定オプションは、接続 URI でクエリーパラメーターとして設定されます。詳細は、「接続 URI」 を参照してください。

5.1. JMS オプション

これらのオプションは、ConnectionSessionMessageConsumerMessageProducer などの 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
これは、すべての事前にフェッチされた値を 1 度に設定するために使用できます。

prefetch の値は、キューまたは共有サブスクリプションの複数のコンシューマーへのメッセージの分散に影響します。値が大きいと、各コンシューマーに一度に送信されるバッチが大きくなる可能性があります。より均等にラウンドロビンの分散を実現するには、小さい値を使用します。

再配信ポリシーオプション

再配信ポリシーは、クライアント上で再配信されたメッセージの処理方法を制御します。

jms.redeliveryPolicy.maxRedeliveries
受信メッセージが再配信された回数に基づいて拒否されるタイミングを制御します。値が 0 の場合は、メッセージの再配信が許可されないことを示します。値が 5 の場合、メッセージを 5 回など再送することができます。デフォルトは -1 で、無制限を意味します。
jms.redeliveryPolicy.outcome
設定された maxRedeliveries 値を超過すると、メッセージに適用される結果を制御します。サポートされる値は ACCEPTEDREJECTEDRELEASEDMODIFIED_FAILED、および MODIFIED_FAILED_UNDELIVERABLE です。デフォルト値は MODIFIED_FAILED_UNDELIVERABLE です。

メッセージ ID ポリシーオプション

メッセージ ID ポリシーは、クライアントから送信されたメッセージに割り当てられたメッセージ ID のデータタイプを制御します。

jms.messageIDPolicy.messageIDType
デフォルトでは、生成された String 値は送信メッセージのメッセージ ID に使用されます。その他の利用可能なタイプは、UUIDUUID_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
blackList によって上書きされない限り、ObjectMessage の内容をデシリアライズする際に許可されるクラス名のコンマ区切りリスト。このリストの名前は、パターンの値ではありません。java.util.Map または java.util のように、正確なクラスまたはパッケージ名を設定する必要があります。パッケージの一致には、サブパッケージが含まれます。デフォルトではすべてを許可します。
jms.deserializationPolicy.blackList
ObjectMessage の内容をデシリアライズする際に拒否されるクラス名とパッケージ名のコンマ区切りリスト。このリストの名前は、パターンの値ではありません。java.util.Map または java.util のように、正確なクラスまたはパッケージ名を設定する必要があります。パッケージの一致には、サブパッケージが含まれます。デフォルトでは、none が回避されます。