第 5 課:接收要求並傳送回覆
新增: 2007 年 9 月 15 日
在此課程中,您將學習如何從目標佇列接收要求訊息,並將回覆訊息傳送回起始端服務。您要從正在同一部電腦上當做 Database Engine 目標執行個體執行的 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; 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 Programming Basics