Lição 5: Recebendo uma solicitação e enviando uma resposta
Nesta lição você aprenderá como receber uma mensagem de solicitação na fila de destino e a enviar uma mensagem de resposta para o serviço de iniciador. Execute estas etapas de uma cópia do Management Studio executada no mesmo computador da 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. Em seguida, execute-a para alternar o contexto para o banco de dados InstTargetDB em que você receberá a mensagem de solicitação e enviará uma mensagem de resposta ao 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 enviar uma mensagem de resposta para o iniciador. A instrução RECEIVE recupera a mensagem de solicitação. Depois, a seguinte instrução SELECT é exibida no texto, de modo que se possa verificar se essa é a mesma mensagem enviada na etapa anterior. A instrução IF testa se a mensagem recebida é do tipo de mensagem de solicitação e se uma instrução SEND será usada para enviar uma mensagem de resposta para o iniciador. A instrução END CONVERSATION é usada para concluir o lado de destino da conversação. A instrução SELECT final exibe o texto da mensagem de resposta.
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
Próximas etapas
Você recebeu a mensagem de solicitação com êxito e enviou uma mensagem de resposta para o serviço de iniciador. Em seguida, você receberá a mensagem de resposta da fila do iniciador e concluirá a conversação. Consulte Lição 6: Recebendo a resposta e concluindo a conversação.
Consulte também