단원 5: 요청 수신 및 응답 전송
적용 대상:SQL ServerAzure SQL Managed Instance
이 단원에서는 대상 큐에서 요청 메시지를 수신하고 초기자 서비스에 회신 메시지를 보내는 방법을 알아봅니다. 이러한 단계는 Database Engine의 대상 인스턴스와 동일한 컴퓨터에서 실행 중인 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: 응답 수신 및 대화 종료를 참조하세요.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기