Cosminexus V9 アプリケーションサーバ 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はキューから取り出したメッセージをアプリケーションに配送します。