レッスン 5 : 要求の受信と応答の送信
新規 : 2007 年 9 月 15 日
このレッスンでは、対象のキューから要求メッセージを受信し、応答メッセージを発信側サービスに送信する方法を学習します。この手順は、対象となるデータベース エンジン インスタンスと同じコンピュータ上で実行されている Management Studio から実行してください。
手順
TargetDB データベースへの切り替え
クエリ エディタ ウィンドウに、次のコードをコピーして貼り付けます。次に、このコードを実行して、要求メッセージの受信と InstInitiatorDB への応答メッセージの送信を行う InstTargetDB データベースにコンテキストを切り替えます。
USE InstTargetDB; GO
要求の受信と応答の送信
クエリ エディタ ウィンドウに、次のコードをコピーして貼り付けます。次に、このコードを実行して、InstTargetQueue から応答メッセージを受信し、応答メッセージを発信側に送信します。RECEIVE ステートメントは、要求メッセージを取得します。次に、後続の SELECT ステートメントによりテキストが表示されます、これにより、このテキストが前の手順で送信されたものと同じメッセージであることを確認できます。IF ステートメントは、受信したメッセージの種類が要求メッセージであるかどうか、および応答メッセージを発信側に送信するときに SEND ステートメントが使用されるかどうかをテストします。END CONVERSATION ステートメントは、メッセージ交換の相手側を終了するために使用します。最後の SELECT ステートメントは、応答メッセージのテキストを表示します。
DECLARE @RecvReqDlgHandle UNIQUEIDENTIFIER; DECLARE @RecvReqMsg NVARCHAR(100); DECLARE @RecvReqMsgName sysname; BEGIN TRANSACTION; RECEIVE TOP(1) @RecvReqDlgHandle = conversation_handle, @RecvReqMsg = message_body, @RecvReqMsgName = message_type_name FROM InstTargetQueue; 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 : 応答の受信とメッセージ交換の終了」を参照してください。
参照
その他の技術情報
END CONVERSATION (Transact-SQL)
RECEIVE (Transact-SQL)
SEND (Transact-SQL)
WAITFOR (Transact-SQL)
Service Broker のプログラミングの基礎