다음을 통해 공유


5단원: 요청 수신 및 응답 전송

이 단원에서는 대상 큐의 요청 메시지를 받고 시작자 서비스에 응답 메시지를 보내는 방법을 배웁니다. 이러한 단계는 데이터베이스 엔진의 대상 인스턴스와 동일한 컴퓨터에서 실행 중인 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단원: 응답 수신 및 대화 종료를 참조하십시오.