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

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

2.4.4 キュー間転送のQoS

Reliable Messagingで保証するQoSには,配送保証と順序保証の2種類があります。

<この項の構成>
(1) 配送保証
(2) 順序保証

(1) 配送保証

Reliable Messagingは,受信側システムから受信の成功が通知されるまでメッセージを再送し続けることで,高信頼なキュー間転送を実現します。また,再送によって同じメッセージを複数回受信した場合も,識別子を用いてメッセージの重複を判断し,重複してキューに登録されることを防止します。

次の図は,送信側システムがA1,A2,A3のメッセージを送信し,受信側システムでキューに正常に登録できたため,A1,A2,A3の受信成功が通知された場合を示しています。1.〜5.は,処理の順序を示します。

受信成功が通知されると,送信側システムのキューのメッセージは削除されます。受信成功が一定の期間通知されない場合は,A1,A2,A3を再送します。

図2-20 配送保証の仕組み

[図データ]

(2) 順序保証

順序保証が指定された転送キューから送信されたメッセージは,送信された順序で受信側システムのキューに登録します。順序どおりでないメッセージを受信した場合はメッセージを永続化して保持しておき,順序が回復した時点でキューに登録します。

次の図は,A1→A2→A3の順序で順序保証が指定されている場合の処理の仕組みを示しています。1.〜4.は,処理の順序を示します。

A1,A3の順序でメッセージを受信しましたが,A3は順序不正のためローカルキューに登録されません。その後,A2を受信した時点で,A2,A3がローカルキューに登録されます。

図2-21 順序保証の仕組み

[図データ]

順序保証を行う場合の滞留メッセージの監視と,メッセージ障害時の動作について説明します。

(a) 滞留メッセージの監視

例えば図2-21で,障害などが原因でA2のメッセージが受信されない場合,A3以降のメッセージはアプリケーションに配送されないメッセージとして滞留します。この場合,A3以降のメッセージは,通信の有効期限に達してデッドメッセージキューに移動されるまで,滞留したままとなります。

この対処として,Reliable Messagingは,定期的に滞留メッセージを監視します。滞留メッセージの監視時間は,RMTRPendingNotifyIntervalプロパティに指定します。メッセージの監視中に,このプロパティに指定した時間より長く滞留しているメッセージが存在する場合は,ログを出力して通知します。

滞留したメッセージを待ち合わせる必要がない場合は,hrmskipmsgコマンドによってA2のメッセージをスキップし,A3以降のメッセージをアプリケーションに配送できます。また,スキップしたメッセージをスキップしたあとに受信すると,そのメッセージの受信は失敗します。

(b) メッセージ障害時の動作

受信側システムから受信失敗が通知されると,送信側システムでは新しいグループで,以降のメッセージを送信します。そのため,受信側システムでは,新しいグループで送信されたメッセージがキューに登録されます。また,受信側システムで,障害が発生したグループ内のキューに登録しないで保持していたメッセージは,デッドメッセージキューに登録されます。