7.8.2 送信先の管理とルーティングサービス
ここでは,CJMSPブローカーによる送信先の管理,およびルーティングサービスについて説明します。
CJMSPブローカーは,物理的な送信先として,キューやトピックをシステムのメモリ内に作成・管理します。
ルーティングサービスは,リソースを効率的に使用しながら,プロデューサー,コンシューマーと送信先間での確実で円滑なメッセージの送受信を実現するためのサービスです。
- 〈この項の構成〉
(1) 送信先の種類
送信先は,作成方法および存在期間によって,次の2種類に分類できます。
-
コマンドで作成する送信先
-
APIで作成される一時的な送信先
それぞれの送信先の特徴について説明します。
- コマンドで作成する送信先
-
システムを管理するユーザがコマンドで明示的に作成した送信先です。
コマンドで作成した送信先は,明示的にコマンドで削除するまで削除されません。
- APIで作成される一時的な送信先
-
J2EEアプリケーション内のAPIによって作成される送信先です。プログラムの中でメッセージの送受信に必要な送信先が作成され,削除されます。一時的な送信先は,送信先を作成したコネクションの中だけで保持されます。また,メッセージの永続化はできず,CJMSPブローカーを再起動しても再作成はされません。
- 注意事項
-
一時的送信先を使用するコンシューマーは,その一時的送信先を作成したコネクションだけで作成できます。
また,通常のメッセージ送受信に使用する送信先以外に,デッドメッセージキューというCJMSPブローカーによって自動的に作成される送信先があります。
デッドメッセージキューは,CJMSPブローカーを最初に起動したタイミングで作成されます。この送信先には,CJMSPブローカーによって,次のメッセージ(デッドメッセージ)が登録されます。
-
処理できないメッセージ
-
有効期限を過ぎたメッセージ
デッドメッセージキューには,ほかの送信先で処理できずに廃棄されたメッセージが格納されるため,メッセージ送受信で発生した問題についての調査などに利用できます。
デッドメッセージキューの管理については,「(3) デッドメッセージキューの管理」を参照してください。
(2) 送信先の設定と管理
CJMSPブローカーでは,送信先を設定・管理するために,次の処理を実行できます。
-
送信先の作成・休止・再開・削除
-
すべての送信先の一覧表示
-
個々のメッセージ,およびCJMSPブローカーで管理するメッセージ全体の制限値管理
-
メッセージの最大数の管理
-
送信先の状態およびプロパティの表示
-
永続化メッセージを格納するディスクの圧縮
-
デッドメッセージキューの管理
これらの処理は,コマンドで実行できます。詳細は,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「5.3 CJMSPブローカー管理のコマンドの詳細」を参照してください。
(3) デッドメッセージキューの管理
デッドメッセージキューは,すべての送信先で必ず使用する設定になっています。
メッセージがデッドメッセージキューに登録された場合の処理については,メッセージごとのメッセージプロパティに設定します。
メッセージプロパティに設定できる内容を次の表に示します。
プロパティ |
データ型 |
説明 |
---|---|---|
CJMS_PRESERVE_UNDELIVERED※ |
Boolean |
メッセージが配信できなかった場合の処理を設定します。
|
CJMS_LOG_DEAD_MESSAGES※ |
Boolean |
メッセージが送信先から削除されてデッドメッセージキューに登録されたことをログに出力するかどうかを設定します。
|
CJMS_TRUNCATE_MSG_BODY※ |
Boolean |
デッドメッセージキューに登録するメッセージのメッセージボディを削除するかどうかを設定します。
|
また,デッドメッセージキューに登録されたデッドメッセージには,CJMSPブローカーによってプロパティが設定されます。設定されたプロパティの情報によって,メッセージがデッドメッセージキューに登録された要因と,要因となった処理を確認できます。
CJMSPブローカーによってデッドメッセージに設定されるプロパティについて,次の表に示します。
プロパティ |
データ型 |
説明 |
---|---|---|
JMSXDeliveryCount |
Integer |
特定のコンシューマーに対して配信されたメッセージの最大数が設定されます。 この値は,CJMS_DMQ_UNDELIVERED_REASONプロパティにERRORまたはUNDELIVERABLEと設定されたプロパティの場合にだけ設定されます。 |
CJMS_DMQ_UNDELIVERED_TIMESTAMP |
Long |
デッドメッセージキューに登録された時刻がミリ秒で設定されます。 |
CJMS_DMQ_UNDELIVERED_REASON |
String |
デッドメッセージキューに登録された要因を示す値が設定されます。設定されるのは次の値です。
なお,複数の要因が該当した場合は,どれか一つの要因だけが設定されます。 |
CJMS_DMQ_PRODUCING_BROKER |
String |
このメッセージを作成したCJMSPブローカーの名前およびポート番号が設定されます。「null」が設定された場合は,ローカルで動作するCJMSPブローカーであることを示します。 |
CJMS_DMQ_DEAD_BROKER |
String |
デッドメッセージキューを管理しているCJMSPブローカーの名前およびポート番号が設定されます。「null」が設定された場合は,ローカルで動作するCJMSPブローカーであることを示します。 |
CJMS_DMQ_UNDELIVERED_EXCEPTION |
String |
例外の発生が原因で配信されなかったメッセージの場合に,アプリケーションまたはCJMSPブローカーで発生した例外名が設定されます。 |
CJMS_DMQ_UNDELIVERED_COMMENT |
String |
メッセージが送信されなかった付加的な要因がある場合に設定されます。 |
CJMS_DMQ_BODY_TRUNCATED |
Boolean |
デッドメッセージキューへの登録時にメッセージボディが削除されたかどうかが設定されます。 「true」の場合,メッセージボディは削除されています。 「false」の場合,メッセージボディは削除されていません。 |