10.5.3 参照メッセージ
参照メッセージを使用すると,送信元および送信先のノードにあるキューにオブジェクトを格納しなくても,ノード間で長大オブジェクトを転送できます。メールアプリケーションなど他形式の既存データがある場合には特に有効です。
この場合,TP1/Message Queueでは,送信側および受信側でメッセージ編集出口UOCが必要です。メッセージ編集出口UOCについては,マニュアル「TP1/Message Queue 使用の手引」を参照してください。
- 〈この項の構成〉
(1) MQRMH構造体とMQMD構造体の使用
MQMD構造体のFormatフィールドにMQFMT_REF_MSG_HEADERを設定してください。MQHREFフォーマットは,MQGET命令で要求されるときにTP1/Message Queueによって自動的に後続のデータとともに変換されます。
ここでは,MQRMH構造体のDataLogicalOffsetおよびDataLogicalLengthフィールドの使用例について説明します。
登録アプリケーションは,参照メッセージを次に示す状態で登録します。
-
物理データなし
-
DataLogicalOffset = 0(このメッセージはオブジェクト全体を表します)
-
DataLogicalLength = 0
オブジェクトが70000バイトの長さであり,メッセージ編集出口UOCが最初の40000バイトをチャネルを経由して送信するとき,参照メッセージには次に示すデータが含まれます。
-
MQRMH構造体に続く40000バイトの物理データ
-
DataLogicalLength = 40000
-
DataLogicalOffset = 0(オブジェクトの先頭から)
その後,登録アプリケーションが追加メッセージを転送キューに登録するとき,次に示すデータが含まれます。
-
物理データなし
-
DataLogicalLength = 0(オブジェクトの終わりまで)。30000を指定することもできます。
-
DataLogicalOffset = 40000(開始位置)
メッセージ編集出口UOCが残りの30000バイトを追加して送信するとき,参照メッセージには次に示すデータが含まれます。
-
MQRMH構造体に続く30000バイトの物理データ
-
DataLogicalLength = 30000
-
DataLogicalOffset = 40000(開始位置)
MQRMHF_LASTも設定されます。