2.6.4 共用キューでのメッセージ受信時の処理の流れ
共用キューを使用して複数システム間でのアプリケーション連携をする場合について,メッセージ受信の処理の流れを説明します。
共用キューを使用して複数システム間でのアプリケーション連携をする場合に受信側アプリケーションがQueueReceiver.receive()またはreceiveNoWait()メソッドを発行してメッセージを受信するには,Reliable Messaging内部で受信準備を完了しておく必要があります。受信準備はイベントの受信,またはリカバリスレッドでのメッセージ登録の検出を契機として開始されます。
共用キューを使用して複数システム間でのアプリケーション連携をする場合の受信処理の流れを次の図に示します。
図中の番号について,説明します。
-
送信側システムは送信用共用キューへのメッセージ登録が完了したあと,受信側システムにイベントを送信します。
送信時のあて先として受信用共用キューに定義されているホスト名とポート番号が使用されます。
-
イベントを受信した受信側システムでは,Reliable Messagingが受信準備を開始します。受信準備では,DBにアクセスしてメッセージオブジェクトを生成したり,トランザクションの制御元にメッセージの有効化を連絡したりします。
受信用共用キューを使用する場合にはRMSHConnectFlagプロパティにtrueを指定してください。また,RMSHPortプロパティにイベントを受信するためのポート番号を指定してください。
-
リカバリスレッドでのメッセージの検出
イベントの受信に失敗したときのために,Reliable Messagingは内部にリカバリスレッドを動作させています。リカバリスレッドはRMSHRecoveryTimerIntervalプロパティ指定値(単位:秒)で自システムの受信用共用キューを監視します。メッセージが登録されていても受信準備が開始されていないキューを検出すると,準備処理が開始されます。
-
アプリケーションでのメッセージの受信
受信準備が完了したあと,アプリケーションがQueueReceiver.receive()またはreceiveNoWait()メソッドを発行すると,Reliable Messagingはキューから取り出したメッセージをアプリケーションに配送します。