Lekcja 2: Począwszy od konwersacji i przenoszenia wiadomości
W tej lekcji dowiesz się rozpocząć konwersację, zakończyć cykl wiadomości proste żądanie odpowiedź, a następnie Zakończ rozmowę.
Procedury
Przełącz się do bazy danych AdventureWorks
Skopiuj i wklej następujący kod w oknie Edytor kwerend.Następnie uruchom go, należy przełączyć kontekst do AdventureWorks bazy danych.
USE AdventureWorks; GO
Rozpocząć konwersację i wysłać wiadomość żądania
Skopiuj i wklej następujący kod w oknie Edytor kwerend.Następnie należy uruchomić na rozpoczęcie konwersacji i wysłać wiadomość żądania //AWDB/1DBSample/TargetService.Kod musi być uruchamiana w jeden blok, ponieważ zmienna jest używana do przekazania uchwyt okna dialogowego z instrukcja BEGIN DIALOG instrukcja SEND.partia jest uruchamiane instrukcja BEGIN DIALOG, aby rozpocząć konwersację.Tworzy komunikat z żądaniem, a następnie używa uchwyt okna dialogowego w instrukcja SEND, aby wysłać komunikat żądania w tej konwersacji.Ostatnia instrukcja SELECT służy do wyświetlania tekstu wiadomości, która została wysłana.
DECLARE @InitDlgHandle UNIQUEIDENTIFIER; DECLARE @RequestMsg NVARCHAR(100); BEGIN TRANSACTION; BEGIN DIALOG @InitDlgHandle FROM SERVICE [//AWDB/1DBSample/InitiatorService] TO SERVICE N'//AWDB/1DBSample/TargetService' ON CONTRACT [//AWDB/1DBSample/SampleContract] WITH ENCRYPTION = OFF; SELECT @RequestMsg = N'<RequestMsg>Message for Target service.</RequestMsg>'; SEND ON CONVERSATION @InitDlgHandle MESSAGE TYPE [//AWDB/1DBSample/RequestMessage] (@RequestMsg); SELECT @RequestMsg AS SentRequestMsg; COMMIT TRANSACTION; 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 TargetQueue1DB i zostanie wysłany komunikat odpowiedzi z powrotem do inicjatora.Instrukcja przyjęcie pobiera komunikat żądania.Poniższa instrukcja SELECT służy do wyświetlania tekstu tak, aby sprawdzić, czy jest on tej samej wiadomości wysyłane w ostatnim 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 TargetQueue1DB ), TIMEOUT 1000; SELECT @RecvReqMsg AS ReceivedRequestMsg; IF @RecvReqMsgName = N'//AWDB/1DBSample/RequestMessage' BEGIN DECLARE @ReplyMsg NVARCHAR(100); SELECT @ReplyMsg = N'<ReplyMsg>Message for Initiator service.</ReplyMsg>'; SEND ON CONVERSATION @RecvReqDlgHandle MESSAGE TYPE [//AWDB/1DBSample/ReplyMessage] (@ReplyMsg); END CONVERSATION @RecvReqDlgHandle; END SELECT @ReplyMsg AS SentReplyMsg; COMMIT TRANSACTION; GO
Odbieranie odpowiedzi i Zakończ rozmowę
Skopiuj i wklej następujący kod w oknie Edytor kwerend.Następnie uruchom go do odbierania wiadomości odpowiedzi i zakończenia rozmowy.Instrukcja przyjęcie pobiera komunikat odpowiedzi z InitiatorQueue1DB.W instrukcja END KONWERSACJI kończy się strony inicjatora rozmowy.Ostatniej instrukcja SELECT służy do wyświetlania tekstu komunikatu odpowiedzi, dzięki czemu można potwierdzić jest taki sam, jak to, co zostało wysłane w poprzednim kroku.
DECLARE @RecvReplyMsg NVARCHAR(100); DECLARE @RecvReplyDlgHandle UNIQUEIDENTIFIER; BEGIN TRANSACTION; WAITFOR ( RECEIVE TOP(1) @RecvReplyDlgHandle = conversation_handle, @RecvReplyMsg = message_body FROM InitiatorQueue1DB ), TIMEOUT 1000; END CONVERSATION @RecvReplyDlgHandle; SELECT @RecvReplyMsg AS ReceivedReplyMsg; COMMIT TRANSACTION; GO
Następne kroki
Pomyślnie ukończono żądanie odpowiedź cyklu wiadomości między //AWDB/1DBSample/InitiatorService and the //AWDB/1DBSample/TargetService.Można powtórzyć kroki opisane w tej lekcji tyle razy, ile chcesz transmisji dwóch żądanie odpowiedź wiadomości.Po zakończeniu badania instrukcje SEND i REPLY można usunąć wszystkie obiekty, które były używane przez konwersacji.Aby uzyskać więcej informacji zobacz Lekcja 3: Upuszczanie obiektów konwersacji.