Hitachi

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


2.3.3 メッセージの受け渡し

Reliable Messagingは,アプリケーションとキューとの間でメッセージの受け渡しをします。

〈この項の構成〉

(1) メッセージの受け渡し方式

アプリケーションとキューとの間でメッセージを受け渡す方式には,値渡し方式と参照渡し方式の二つ方法があります。それぞれの方法について説明します。

(a) 値渡し方式

値渡し方式は,Reliable Messagingで扱うメッセージとアプリケーションが保持するメッセージを分離する方式です。そのため,アプリケーションが1度登録したメッセージを変更したり,取り出したメッセージを再び登録したりできます。Reliable Messagingは,メッセージの登録時および取り出し時にメッセージをコピーします。

値渡し方式を利用したメッセージの受け渡しの概要を次の図に示します。

図2‒13 値渡し方式を利用したメッセージの受け渡しの概要

[図データ]

(b) 参照渡し方式

参照渡し方式は,アプリケーションが保持するメッセージをそのままReliable Messagingで扱う方式です。アプリケーションがReliable Messagingと同じメッセージのインスタンスを参照するため,アプリケーションでメッセージを利用するときに,メッセージの再利用ができないなどの制限があります。しかし,値渡し方式よりも高速にメッセージを送受信できます。

参照渡し方式を利用する場合,RMPassByReferenceプロパティにtrueを指定します。

参照渡し方式を利用したメッセージの受け渡しの概要を次の図に示します。

図2‒14 参照渡し方式を利用したメッセージの受け渡しの概要

[図データ]

(2) 参照渡し方式を利用した場合の動作

参照渡し方式では,送信側アプリケーションが保持するメッセージと受信側アプリケーション(受信をロールバックした場合,ロールバックする前の受信側アプリケーションを含む)が保持するメッセージが同じインスタンスとなります。そのため,最後の受信側アプリケーションがメッセージを受信すると,送信側アプリケーションと以前の受信側アプリケーションが保持するメッセージは,最後の受信側アプリケーションのメッセージと同じ状態となります。

参照渡し方式を利用した場合の動作を次の図に示します。

図2‒15 参照渡し方式を利用した場合の動作

[図データ]

図2-14に示すように,送信側アプリケーションと受信側アプリケーションでは次の状態となります。

(3) 参照渡し方式を利用した場合のメッセージの再利用

参照渡し方式を利用した場合,Reliable Messagingが持つメッセージのインスタンスをアプリケーションも保持していることがあります。そのため,アプリケーションによるメッセージの再利用は行えません。メッセージの再利用とは,Reliable Messagingのキューに登録されたメッセージまたは登録を試みたメッセージを,再び登録することやそのメッセージに設定した情報を変更することです。アプリケーションによってメッセージを再利用した場合はエラーが発生します。再利用できないメッセージを次に示します。