IBM MQ とのアプリケーション対アプリケーション
アプリケーション間の接続は通常、多様なアプリケーション・サブシステムの集まりを統合するために使用されます。 アプリケーション統合を促進するために、 WebSphere® MQ はアプリケーションを相互接続する手段を提供しています。
Request-and-reply方法は、アプリケーションを相互接続する場合に非常に一般的になります
請求と応答通信方式
要求/応答方式では、あるアプリケーションが別のアプリケーションのサービスを要求することができます。 これを行う 1 つの方法として、リクエスターからサービス・プロバイダーにメッセージを送信し、何らかの作業を実行するよう要求します。 作業が完了したら、プロバイダーは結果を送信するのか、完了を確認するだけかを決定し 、リクエスターに戻します。 リクエスターが続行する前に応答を待たない限り、IBM MQ応答をその要求に関連付ける方法を提供しなければなりません。
IBM MQ リクエスターとプロバイダー間の交換でメッセージを相関させるための相関識別子を提供します。 リクエスターは、既知の相関 ID を使用してメッセージにマークを付けます。 プロバイダーは、同じ相関 ID を使用してその応答にマークを付けます。 リクエスターは、関連付けられた応答を取得するために、キューからメッセージを受信する際にこの相関 ID を指定します。 一致する相関 ID を持つ最初のメッセージがリクエスターに戻されます。
次の例は、1 フェーズ・コミット用の DB2MQ スキーマを使用します。
請求と応答通信の例
- 例
- 以下のSQL SELECTステートメントは、文字列「
Msg with corr id」で構成されるメッセージをサービスMYSERVICEに送信します。相関IDを使用してポリシーMYPOLICYを使用します。 CORRID1:
SYSIBM.SYSDUMMY1 は 1 行のみを含むので、MQSEND 関数は一度だけ呼び出されます。 このMQSENDは単相コミットを使用するため、IBM MQメッセージをキューに追加し、COMMITステートメントを使用する必要はありません。SELECT DB2MQ.MQSEND ('MYSERVICE', 'MYPOLICY', 'Msg with corr id', 'CORRID1') FROM SYSIBM.SYSDUMMY1; - 例
- 次のSQLSELECTステートメントは、ポリシーMYPOLICYを使用して、サービスMYSERVICEによって指定されたキューから識別子CORRID1に一致する最初のメッセージを受信します。
SELECT ステートメントは VARCHAR(4000) ストリングを戻します。 この相関 ID を持つ使用可能なメッセージが存在しない場合、NULL 値が戻され、キューは変更 されません。SELECT DB2MQ.MQRECEIVE ('MYSERVICE', 'MYPOLICY', 'CORRID1') FROM SYSIBM.SYSDUMMY1;