Hitachi

Cosminexus V11 アプリケーションサーバ Cosminexus Reliable Messaging


4.2.4 デッドメッセージキューによるデッドメッセージの再登録

デッドメッセージキューを作成する方法は,ローカルキューと同じです。ただし,RMDeadMessageQueueNameプロパティにキュー名を指定する必要があります。ローカルキューの作成方法については,「4.2.1 ローカルキューによるシステム内アプリケーション間連携」を参照してください。

ここでは,デッドメッセージを再登録する場合の手順について説明します。有効期限切れ,配信回数超過,通信失敗などで,デッドメッセージキューに移動したメッセージを,移動前のキュー(ローカルキュー,受信用共用キュー,または転送キュー)に新しいメッセージとして再登録できます。デッドメッセージを再登録する場合の手順を次の図に示します。

図4‒3 デッドメッセージの再登録

[図データ]

  1. デッドメッセージキュー移動時にログファイルに出力されるデッドメッセージID(DMID)を参照します。

    ログファイルは,Application Server用メッセージログに出力されます。また,DMIDについては,「4.2.4(1) DMID」を参照してください。

  2. DMIDを基に,hrmlsdmsgコマンドでデッドメッセージキューに移動したデッドメッセージの内容(JMSヘッダ,プロパティ,ペイロード,デッドメッセージ固有の属性情報など)を確認します。

    hrmlsdmsgコマンドについては,「8.3.10 hrmlsdmsg(デッドメッセージの参照)」を参照してください。

  3. 該当メッセージをデッドメッセージキューに移動する前のキューに再登録したい場合は,hrmregdmsgコマンドを使用します。

    該当メッセージはデッドメッセージキューから削除され,デッドメッセージキューに移動する前のキューに再登録されます。このとき,新しいメッセージとして登録されます。hrmregdmsgコマンドについては,「8.3.21 hrmregdmsg(デッドメッセージの再登録)」を参照してください。

注※

デッドメッセージ移動前のキューに再登録する場合,ユーザが指定したメッセージの情報は引き継がれます。ただし,メッセージIDやメッセージ有効期限などのReliable Messagingがメッセージ登録時に設定する情報は再設定されます。また,デッドメッセージ固有の属性情報(DMID,移動前キュー名,デッドメッセージキュー移動原因,デッドメッセージキュー移動時刻)は失われます。

〈この項の構成〉

(1) DMID

デッドメッセージID(DMID)とは,デッドメッセージを識別するために設定される一意のIDです。hrmlsdmsgコマンドでデッドメッセージを参照したり,hrmregdmsgコマンドでデッドメッセージを再登録したりするときの引数として使用します。

DMIDは,デッドメッセージキュー移動時のログメッセージに出力されます。また,JMSメッセージのReliable Messaging固有のプロパティやhrmlsdmsgコマンドの実行結果として参照できます。

(2) サーバ間転送での注意事項

サーバ間転送時の送信側システムのデッドメッセージキューには,受信側システムに到達しているメッセージや受信側デッドメッセージキューに格納されているメッセージが存在する場合があります。

この場合,送信側システムの転送キューからデッドメッセージキュー移動したデッドメッセージを転送キューに再登録する前に,メッセージIDなどで受信側システムのメッセージ到達状態を確認して,受信側システムに到達済みのメッセージを再登録しないようにしてください。送信側システムで転送キューに再登録したメッセージは,最初に転送キューに登録したメッセージとは別のメッセージとして転送されます。そのため,送信側システムで再登録すると,受信側システムで同じ内容のメッセージが重複して受信されることになります。

受信側システムのメッセージ到達状態を確認するには,送信側システムで該当するデッドメッセージのデッドメッセージキュー移動時のメッセージログ(KFRM40012-I)に出力されるDMID,グループID,グループ内シーケンス番号と,受信側システムで回線トレースに出力されるグループID,グループ内シーケンス番号とを照合してください。回線トレースについては,「9.3.5 回線トレース」を参照してください。

送信側・受信側システム両方のデッドメッセージキューに,同じメッセージが格納される場合を次の図に示します。

図4‒4 送信側・受信側システムのデッドメッセージキューに,同じメッセージが格納される場合

[図データ]

  1. 転送キューからローカルキューへの送信は成功します。

  2. 受信システムからの受信成功通知に失敗します。

  3. ローカルキューに格納されたメッセージは有効期限に到達するなどして,受信側システムのデッドメッセージキューに格納されます。

  4. 転送キューからメッセージが再送されますが,有効期限に到達して,失敗通知が送信側システムに通知されます。これによって,送信側システムのデッドメッセージキューに同じメッセージが格納されます。