Lektion 5: Ta emot en begäran och skicka ett svar

gäller för:SQL ServerAzure SQL Managed Instance

I den här lektionen får du lära dig hur du tar emot ett begärandemeddelande från målkön och skickar ett svarsmeddelande till initierartjänsten. Kör de här stegen från en kopia av Management Studio som körs på samma dator som målinstansen av databasmotorn.

Procedures

Växla till TargetDB-databasen

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster och kör den sedan för att växla kontext till InstTargetDB-databasen där du får begärandemeddelandet och skicka ett svarsmeddelande tillbaka till InstInitiatorDB.

    USE InstTargetDB;
    GO
    

Ta emot begäran och skicka ett svar

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster. Kör det sedan för att ta emot svarsmeddelandet från InstTargetQueue och skicka ett svarsmeddelande tillbaka till initieraren. - RECEIVE instruktionen hämtar begärandemeddelandet och följande SELECT instruktion visar texten så att du kan kontrollera att det är samma meddelande som skickades i föregående steg. Instruktionen IF testar om det mottagna meddelandet är en typ av begärandemeddelande och om en SEND instruktion används för att skicka tillbaka ett svarsmeddelande till initieraren. -instruktionen END CONVERSATION används för att avsluta målsidan av konversationen. Den slutliga SELECT instruktionen visar texten i svarsmeddelandet.

    DECLARE @RecvReqDlgHandle AS UNIQUEIDENTIFIER;
    DECLARE @RecvReqMsg AS NVARCHAR (100);
    DECLARE @RecvReqMsgName AS 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 AS 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
    

Nästa steg

Du har tagit emot begärandemeddelandet och skickat ett svarsmeddelande till initierartjänsten. Sedan får du svarsmeddelandet från initierarkön och avslutar konversationen.