Lição 5: Receber um pedido e enviar uma resposta

Aplica-se a:SQL ServerAzure SQL Managed Instance

Nesta lição, você aprenderá como receber uma mensagem de solicitação da fila de destino e enviar uma mensagem de resposta para o serviço iniciador. Execute estas etapas a partir de uma cópia do Management Studio em execução no mesmo computador que a instância de destino do Mecanismo de Banco de Dados.

Procedures

Alternar para o banco de dados TargetDB

  • Copie e cole o código a seguir em uma janela do Editor de Consultas e, em seguida, execute-o para alternar o contexto para o banco de dados InstTargetDB onde você recebe a mensagem de solicitação e envia uma mensagem de resposta de volta para o InstInitiatorDB.

    USE InstTargetDB;
    GO
    

Receba o pedido e envie uma resposta

  • Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para receber a mensagem de resposta do InstTargetQueue e envie uma mensagem de resposta de volta para o iniciador. A RECEIVE instrução recupera a mensagem de solicitação e, em seguida, a instrução a seguir SELECT exibe o texto para que você possa verificar se é a mesma mensagem que foi enviada na etapa anterior. A IF instrução testa se a mensagem recebida é um tipo de mensagem de solicitação e se uma SEND instrução é usada para enviar uma mensagem de resposta de volta ao iniciador. A END CONVERSATION declaração é usada para encerrar o lado alvo da conversa. A declaração final SELECT exibe o texto da mensagem de resposta.

    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
    

Próximo passo

Você recebeu com êxito a mensagem de solicitação e enviou uma mensagem de resposta para o serviço iniciador. Em seguida, você recebe a mensagem de resposta da fila do iniciador e encerra a conversa.