JMS 接続ファクトリ : コンフィグレーション : クライアント
このページでは、この JMS 接続ファクトリのクライアント コンフィグレーション パラメータを定義します。これには、恒久サブスクライバのクライアント ID、確認応答ポリシーなどのパラメータが含まれます。
コンフィグレーション オプション
名前 説明 恒久サブスクライバのクライアント ID この JMS 接続ファクトリを使用する恒久サブスクライバの任意指定のクライアント ID。接続ファクトリでこの値をコンフィグレーションすると、このファクトリの接続が複数の JMS クライアントで使用されないようになります。
通常、JMS 恒久サブスクライバ アプリケーションはそのクライアント ID を
javax.jms.Connection.setClientID()
呼び出しを使って動的に設定します。MBean 属性 (アプリケーション モジュールには適用しない) :
ClientParamsBean.ClientId
セッションあたりの最大メッセージ数 非同期セッション向けに存在でき、メッセージ リスナにまだ渡されていないメッセージの最大数。同期プリフェッチ モードが有効化されている場合、この値は 1 回のサーバ アクセスでメッセージをプリフェッチする、メッセージ コンシューマでの同期セッションにも影響します。
値 -1 は、メッセージ数に制限がないことを示します。ただし、この場合、制限は残っている仮想メモリの容量に設定されます。
メッセージの数が [最大メッセージ数] の値に達すると、次のようになります。
マルチキャスト セッションの場合、新しいメッセージは
OverrunPolicy
パラメータによって指定されたポリシーに従って破棄され、DataOverrunException が送出されます。非マルチキャスト セッションの場合、新しいメッセージはフロー制御されるか、アプリケーションがメッセージを受け入れることができるまでサーバ上に保持されます。
マルチキャスト セッションの場合、接続が停止してもメッセージの配信は、[最大メッセージ数] 値に達するまで続行されます。この値に達すると、メッセージは [超過時のポリシー] に従って破棄されます。
MBean 属性 (アプリケーション モジュールには適用しない) :
ClientParamsBean.MessagesMaximum
同期コンシューマのプリフェッチ モード 同期コンシューマが 1 回のサーバ アクセスでメッセージ (つまり、サーバからクライアントに送られるメッセージ) をプリフェッチするかどうかを指定します。
- [無効]
- メッセージのプリフェッチが無効化されていることを示します。
- [有効]
- 同期コンシューマ (キュー受信側またはトピック サブスクライバ) がメッセージをプリフェッチすることを示します。[最大メッセージ数] パラメータで定義された最大メッセージ数を超える量のメッセージをプリフェッチすることはできません。
- [トピック サブスクライバのみ]
- 同期トピック サブスクライバのみがメッセージをプリフェッチすることを示します。[最大メッセージ数] パラメータで定義された最大メッセージ数を超える量のメッセージをプリフェッチすることはできません。
同期メッセージ プリフェッチは、次の条件をサポートしておらず、これらの条件が発生すると JMS 例外が送出されます。
同期メッセージ受信に対するユーザ (XA) トランザクション
(キューであるかトピックであるかに関係なく) セッションごとに複数の同期コンシューマ
この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean 属性 (アプリケーション モジュールには適用しない) :
ClientParamsBean.SynchronousPrefetchMode
マルチキャストでの超過時のポリシー 未処理のマルチキャスト メッセージ数が [最大メッセージ数] で指定された値に達し、一部のメッセージを破棄しなければならないときに使用するポリシー。
- [新しいメッセージを保持]
- 最新のメッセージが最も古いメッセージよりも優先され、必要に応じて、古いメッセージが破棄されることを示します。
- [古いメッセージを保持]
- 最も古いメッセージが最新のメッセージよりも優先され、必要に応じて、最新のメッセージが破棄されることを示します。
メッセージの新旧は、
JMSTimestamp
の値ではなく受信の順序によって定義されます。MBean 属性 (アプリケーション モジュールには適用しない) :
ClientParamsBean.MulticastOverrunPolicy
onMessage() での close() を許可
close()
メソッドをonMessage()
メソッド呼び出し内で発行できるようにするメッセージ コンシューマを、接続ファクトリで作成するかどうかを指定します。
このフラグを有効にした場合、永続的なブロッキングではなく、
onMessage()
メソッド呼び出し内からのclose()
メソッド呼び出しが成功します。セッションの確認応答モードをAUTO_ACKNOWLEDGE
に設定した場合、onMessage()
呼び出しが完了しても現在のメッセージは自動的に確認応答されます。このフラグを無効にすると、
onMessage()
から呼び出されたときにstop()
およびclose()
メソッドがハングします。この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean 属性 (アプリケーション モジュールには適用しない) :
ClientParamsBean.AllowCloseInOnMessage
クライアント確認応答ポリシー
CLIENT_ACKNOWLEDGE
モードを使用する非トランザクション セッションの確認応答ポリシー。[すべて
] は、メッセージの確認応答を呼び出すと、セッションで受信されたすべての未応答メッセージを確認応答することを示します。[前へ
] は、メッセージの確認応答を呼び出すと、そのメッセージを含む未応答メッセージのみを確認応答することを指定します。このパラメータは JMS 仕様の変更の問題を回避し、非トランザクション セッションに
CLIENT_ACKNOWLEDGE
確認応答モードを使用する実装に対してのみ適用されます。具体的に説明すると、この仕様では確認応答されるメッセージとその前のすべてのメッセージを確認応答できました。しかし、仕様の変更によって、任意のメッセージを確認応答すると受信済みのすべてのメッセージが確認応答されるようになりました (確認応答されるメッセージの後に受信したメッセージも含む)。
ACKNOWLEDGE_PREVIOUS
は、これまでの動作を保持します (確認応答されるメッセージとその前までのすべてのメッセージの確認応答)。一方、ACKNOWLEDGE_ALL
は、新しい動作をもたらします。どのメッセージが確認応答に影響を及ぼしているかに関わらず、特定のセッションで受信されたすべてのメッセージが確認応答されます。MBean 属性 (アプリケーション モジュールには適用しない) :
ClientParamsBean.AcknowledgePolicy
再接続ポリシー サーバとのネットワーク接続が失われた後、またはサーバの再起動時に、明示的および暗黙的にリフレッシュされる JMS クライアントの種類を指定します。たとえば、[プロデューサ] オプションを選択すると、JMS プロデューサが明示的にリフレッシュされ、関連するすべてのセッション クライアントおよび接続クライアントが暗黙的にリフレッシュされます。
- [なし]
この接続ファクトリから派生する JMS クライアントをリフレッシュしません。
- [プロデューサ]
この接続ファクトリから派生するすべての JMS プロデューサ クライアントをリフレッシュします。このオプションでは、恒久サブスクライバのコンフィグレーション済みクライアント ID が付いた Consumers、QueueBrowsers、または Connections はリフレッシュされません。
- [すべて]
恒久サブスクライバのコンフィグレーション済みクライアント ID が付いた Connections を含む、この接続ファクトリから派生するすべての JMS コンシューマ クライアントおよびプロデューサ クライアントをリフレッシュします。このオプションでは、QueueBrowser クライアントはリフレッシュされません。
この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean 属性 (アプリケーション モジュールには適用しない) :
ClientParamsBean.ReconnectPolicy
再接続ブロッキング時間
producer.send()
、consumer.receive()
、session.createBrowser()
など、任意の同期 JMS 呼び出しが、進行中の JMS クライアント再接続を放棄せずに、呼び出しスレッドをブロックする最長時間 (ミリ秒)。この属性は、Reconnect Policy オプションが [プロデューサ] または [すべて] に設定されている場合のみ、有効です。値が 0 の場合、同期 JMS 呼び出しは進行中のどの再接続をも待機しません。値が -1 の場合、再接続を無期限に待機します。
この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean 属性 (アプリケーション モジュールには適用しない) :
ClientParamsBean.ReconnectBlockingMillis
再接続の合計期間 最初のネットワーク接続解除、または最後の同期呼び出しの試行のうち、いずれか最近に起こった方の後に、JMS クライアント (特に非同期コンシューマ) が、再試行を放棄せずサーバに再接続しようとし続ける最長時間 (ミリ秒)。
この属性は、ReconnectPolicy 属性が [プロデューサ] または [すべて] に設定されている場合のみ、有効です。デフォルト値 -1 は、再接続が無期限に試行され続けることを意味します。値 0 は、再試行が 1 度だけ行われることを意味します。
この属性は動的で、いつでも変更できます。ただし、値を変更しても既存の接続には影響しません。この接続ファクトリで作成された新しい接続にのみ影響します。
MBean 属性 (アプリケーション モジュールには適用しない) :
ClientParamsBean.TotalReconnectPeriodMillis