Compartilhar via


Lição 5: Receber uma solicitação e enviar uma resposta

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Nesta lição, você aprenderá a receber uma mensagem de solicitação da fila de destino e enviar uma mensagem de resposta ao serviço iniciador. Execute estas etapas 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.

Procedimentos

Alternar para o banco de dados TargetDB

  • Copie e cole o código a seguir em uma janela do Editor de Consultas e 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
    

Receber a solicitação e enviar 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 retornar uma mensagem de resposta 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 instrução é usada para encerrar o lado de destino da conversa. A instruçã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óxima etapa

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