Hitachi

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


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

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

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

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

〈この項の構成〉

(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」の場合,メッセージボディは削除されていません。