レッスン 5 : 要求の受信と応答の送信
このレッスンでは、発信先キューから要求メッセージを受信し、発信側サービスに応答メッセージを送信する方法を学習します。これらの手順は、データベース エンジンの発信先インスタンスと同じコンピュータで実行されている Management Studio のコピーから実行してください。
手順
TargetDB データベースへの切り替え
次のコードをコピーし、クエリ エディタ ウィンドウに貼り付けます。次にこのコードを実行し、コンテキストを InstTargetDB データベースに切り替えます。このデータベースで要求メッセージを受信し、応答メッセージを InstInitiatorDB に返信します。
USE InstTargetDB; GO
要求の受信と応答の送信
次のコードをコピーし、クエリ エディタ ウィンドウに貼り付けます。次にこのコードを実行し、InstTargetQueue から応答メッセージを受信して、発信側に応答メッセージを返信します。RECEIVE ステートメントは要求メッセージを取得します。次に、SELECT ステートメントでテキストを表示し、前の手順で送信したメッセージと同じメッセージであることを確認できるようにします。IF ステートメントは、受信したメッセージが要求メッセージ型であるかどうか、および応答メッセージを発信側に返信するために SEND ステートメントを使用するかどうかをテストします。発信先でのメッセージ交換を終了するには、END CONVERSATION ステートメントを使用します。最後の SELECT ステートメントは、応答メッセージのテキストを表示します。
DECLARE @RecvReqDlgHandle UNIQUEIDENTIFIER; DECLARE @RecvReqMsg NVARCHAR(100); DECLARE @RecvReqMsgName sysname; BEGIN TRANSACTION; WAITFOR ( RECEIVE TOP(1) @RecvReqDlgHandle = conversation_handle, @RecvReqMsg = message_body, @RecvReqMsgName = message_type_name FROM InstTargetQueue ), TIMEOUT 1000; SELECT @RecvReqMsg AS ReceivedRequestMsg; IF @RecvReqMsgName = N'//BothDB/2InstSample/RequestMessage' BEGIN DECLARE @ReplyMsg NVARCHAR(100); SELECT @ReplyMsg = N'<ReplyMsg>Message for Initiator service.</ReplyMsg>'; SEND ON CONVERSATION @RecvReqDlgHandle MESSAGE TYPE [//BothDB/2InstSample/ReplyMessage] (@ReplyMsg); END CONVERSATION @RecvReqDlgHandle; END SELECT @ReplyMsg AS SentReplyMsg; COMMIT TRANSACTION; GO
次の手順
これで要求メッセージを適切に受信し、発信側サービスに応答メッセージを送信できました。次に、発信側キューから応答メッセージを受信し、メッセージ交換を終了します。「レッスン 6 : 応答の受信とメッセージ交換の終了」を参照してください。