Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)

[目次][用語][索引][前へ][次へ]

7.8.2 送信先の管理とルーティングサービス

ここでは,CJMSPブローカーによる送信先の管理,およびルーティングサービスについて説明します。

CJMSPブローカーは,物理的な送信先として,キューやトピックをシステムのメモリ内に作成・管理します。

ルーティングサービスは,リソースを効率的に使用しながら,プロデューサー,コンシューマーと送信先間での確実で円滑なメッセージの送受信を実現するためのサービスです。

<この項の構成>
(1) 送信先の種類
(2) 送信先の設定と管理
(3) デッドメッセージキューの管理

(1) 送信先の種類

送信先は,作成方法および存在期間によって,次の2種類に分類できます。

それぞれの送信先の特徴について説明します。

コマンドで作成する送信先
システムを管理するユーザがコマンドで明示的に作成した送信先です。
コマンドで作成した送信先は,明示的にコマンドで削除するまで削除されません。

APIで作成される一時的な送信先
J2EEアプリケーション内のAPIによって作成される送信先です。プログラムの中でメッセージの送受信に必要な送信先が作成され,削除されます。一時的な送信先は,送信先を作成したコネクションの中だけで保持されます。また,メッセージの永続化はできず,CJMSPブローカーを再起動しても再作成はされません。
注意
一時的送信先を使用するコンシューマーは,その一時的送信先を作成したコネクションだけで作成できます。

また,通常のメッセージ送受信に使用する送信先以外に,デッドメッセージキューというCJMSPブローカーによって自動的に作成される送信先があります。

デッドメッセージキューは,CJMSPブローカーを最初に起動したタイミングで作成されます。この送信先には,CJMSPブローカーによって,次のメッセージ(デッドメッセージ)が登録されます。

デッドメッセージキューには,ほかの送信先で処理できずに廃棄されたメッセージが格納されるため,メッセージ送受信で発生した問題についての調査などに利用できます。

デッドメッセージキューの管理については,「(3) デッドメッセージキューの管理」を参照してください。

(2) 送信先の設定と管理

CJMSPブローカーでは,送信先を設定・管理するために,次の処理を実行できます。

これらの処理は,コマンドで実行できます。詳細は,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「5.3 CJMSPブローカー管理のコマンドの詳細」を参照してください。

(3) デッドメッセージキューの管理

デッドメッセージキューは,すべての送信先で必ず使用する設定になっています。

メッセージがデッドメッセージキューに登録された場合の処理については,メッセージごとのメッセージプロパティに設定します。

メッセージプロパティに設定できる内容を次の表に示します。

表7-3 デッドメッセージキューに登録する際の処理としてメッセージプロパティに設定できる内容

プロパティ データ型 説明
CJMS_PRESERVE_UNDELIVERED Boolean メッセージが配信できなかった場合の処理を設定します。
  • 「true」を設定した場合,メッセージはデッドメッセージキューに登録されます。
  • 「false」を設定した場合,メッセージはデッドメッセージキューには登録されません。
CJMS_LOG_DEAD_MESSAGES Boolean メッセージが送信先から削除されてデッドメッセージキューに登録されたことをログに出力するかどうかを設定します。
  • 「true」を設定した場合,ログに出力します。
  • 「false」を設定した場合,ログに出力しません。
CJMS_TRUNCATE_MSG_BODY Boolean デッドメッセージキューに登録するメッセージのメッセージボディを削除するかどうかを設定します。
  • 「true」を設定した場合,メッセージボディを削除してからデッドメッセージキューに登録します。
  • 「false」を設定した場合,メッセージボディを削除しないでデッドメッセージキューに登録します。

注※ CJMSプロバイダではサポートしていません。


また,デッドメッセージキューに登録されたデッドメッセージには,CJMSPブローカーによってプロパティが設定されます。設定されたプロパティの情報によって,メッセージがデッドメッセージキューに登録された要因と,要因となった処理を確認できます。

CJMSPブローカーによってデッドメッセージに設定されるプロパティについて,次の表に示します。

表7-4 CJMSPブローカーによってデッドメッセージに設定されるプロパティ

プロパティ データ型 説明
JMSXDeliveryCount Integer 特定のコンシューマーに対して配信されたメッセージの最大数が設定されます。
この値は,CJMS_DMQ_UNDELIVERED_REASONプロパティにERRORまたはUNDELIVERABLEと設定されたプロパティの場合にだけ設定されます。
CJMS_DMQ_UNDELIVERED_TIMESTAMP Long デッドメッセージキューに登録された時刻がミリ秒で設定されます。
CJMS_DMQ_UNDELIVERED_REASON String デッドメッセージキューに登録された要因を示す値が設定されます。設定されるのは次の値です。
  • OLDEST
    最も古いメッセージだったため処理されなかったことを示します。
  • LOW_PRIORITY
    優先順位が低かったため処理されなかったことを示します。
  • EXPIRED
    メッセージの有効期限が過ぎたため処理されなかったことを示します。
  • UNDELIVERABLE
    配信されなかったことを示します。
  • ERROR
    エラーが発生したことを示します。この要因が設定されたメッセージは,内部的な要因で処理ができなかったため,プロデューサーからメッセージを送信し直す必要があります。
なお,複数の要因が該当した場合は,どれか一つの要因だけが設定されます。
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」の場合,メッセージボディは削除されていません。