Hitachi

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


2.6.4 共用キューでのメッセージ受信時の処理の流れ

共用キューを使用して複数システム間でのアプリケーション連携をする場合について,メッセージ受信の処理の流れを説明します。

共用キューを使用して複数システム間でのアプリケーション連携をする場合に受信側アプリケーションがQueueReceiver.receive()またはreceiveNoWait()メソッドを発行してメッセージを受信するには,Reliable Messaging内部で受信準備を完了しておく必要があります。受信準備はイベントの受信,またはリカバリスレッドでのメッセージ登録の検出を契機として開始されます。

共用キューを使用して複数システム間でのアプリケーション連携をする場合の受信処理の流れを次の図に示します。

図2‒26 共用キューを使用して複数システム間でのアプリケーション連携をする場合の受信処理の流れ

[図データ]

図中の番号について,説明します。

  1. イベントの送信

    送信側システムは送信用共用キューへのメッセージ登録が完了したあと,受信側システムにイベントを送信します。

    送信時のあて先として受信用共用キューに定義されているホスト名とポート番号が使用されます。

  2. イベントの受信

    イベントを受信した受信側システムでは,Reliable Messagingが受信準備を開始します。受信準備では,DBにアクセスしてメッセージオブジェクトを生成したり,トランザクションの制御元にメッセージの有効化を連絡したりします。

    受信用共用キューを使用する場合にはRMSHConnectFlagプロパティにtrueを指定してください。また,RMSHPortプロパティにイベントを受信するためのポート番号を指定してください。

  3. リカバリスレッドでのメッセージの検出

    イベントの受信に失敗したときのために,Reliable Messagingは内部にリカバリスレッドを動作させています。リカバリスレッドはRMSHRecoveryTimerIntervalプロパティ指定値(単位:秒)で自システムの受信用共用キューを監視します。メッセージが登録されていても受信準備が開始されていないキューを検出すると,準備処理が開始されます。

  4. アプリケーションでのメッセージの受信

    受信準備が完了したあと,アプリケーションがQueueReceiver.receive()またはreceiveNoWait()メソッドを発行すると,Reliable Messagingはキューから取り出したメッセージをアプリケーションに配送します。