第 5 課:接收要求並傳送回覆

適用於:SQL ServerAzure SQL 受控執行個體

在這一課,您將學會如何從目標佇列接收要求訊息並將回覆訊息傳送至起始端服務。 請從在目標資料庫引擎執行個體所在的同一部電腦上執行的 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:接收回覆並結束交談

另請參閱