Lekcja 5: Odbiera żądanie i wysyłania odpowiedzi
W tej lekcji użytkownik zapozna komunikatu żądania z kolejki miejsce docelowe i wysłać wiadomość odpowiedzi do usługa inicjatora.Uruchom te czynności z kopii Management Studio na którym jest uruchomiony na tym samym komputerze jako miejsce docelowe wystąpienie z Database Engine.
Procedury
Przełącz się do bazy danych TargetDB
Skopiuj i wklej następujący kod w oknie Edytor kwerend.Następnie uruchom go, należy przełączyć kontekst do InstTargetDB bazy danych, gdzie będzie otrzymywać komunikat żądania i Wyślij wiadomość odpowiedzi do InstInitiatorDB.
USE InstTargetDB; GO
Odbierają żądanie i przesyła odpowiedź
Skopiuj i wklej następujący kod w oknie Edytor kwerend.Następnie uruchom go komunikat odpowiedzi z InstTargetQueue i zostanie wysłany komunikat odpowiedzi z powrotem do inicjatora.Instrukcja przyjęcie pobiera komunikat żądania.Następnie następującą instrukcję WYBIERAJĄCĄ Wyświetla tekst tak, aby sprawdzić, czy jest on ten sam komunikat, który został wysłany w poprzednim kroku.Wyrażenie IF sprawdza, czy odebranej wiadomości jest to typ komunikatu żądania, a jeśli instrukcja SEND jest używany do wysyłania wiadomości odpowiedzi do inicjatora.W instrukcja END KONWERSACJI jest używana do końca strony miejsce docelowe konwersacji.Końcowe instrukcja SELECT wyświetla tekst komunikatu odpowiedzi.
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
Następne kroki
Zostały pomyślnie Odebrano komunikat żądania i odpowiedzi na wiadomość odpowiedzi do usługa inicjatora.Następnie będzie otrzymywać komunikat odpowiedzi z kolejki inicjatora i zakończyć rozmowę.Zobacz Lekcja 6: Odbieranie odpowiedzi i końcowa konwersacji.