Udostępnij za pośrednictwem


Lekcja 5: Odbiera żądanie i wysyłania odpowiedzi

W tej lekcji użytkownik zapozna komunikatu żądania z kolejka docelowa i wysłania komunikatu odpowiedzi usługa inicjatora.Uruchom następujące kroki z kopii Management Studio na tym samym komputerze z systemem miejsce docelowe wystąpienie Aparat baz danych.

Procedury

Przełącz się do bazy danych TargetDB

  • Skopiuj i wklej następujący kod w oknie Edytora kwerend.Następnie uruchom go przełączyć kontekst do InstTargetDB bazy danych, gdy zostanie wyświetlony komunikat żądania i Wyślij komunikat odpowiedzi z powrotem do InstInitiatorDB.

    USE InstTargetDB;
    GO
    

Żądanie odbierania i wysyłania odpowiedzi

  • Skopiuj i wklej następujący kod w oknie Edytora kwerend.Następnie uruchom go komunikat odpowiedzi z InstTargetQueue i wysłać wiadomość odpowiedzi do inicjatora.Instrukcja ODBIERZ pobiera komunikat żądania.Następnie Poniższa instrukcja SELECT wyświetla tekst tak, aby sprawdzić, czy jest ten sam komunikat, który został wysłany w poprzednim kroku.Instrukcja jeżeli testy czy odebranej wiadomości jest typ komunikatu żądania i Wyślij oświadczenie jest używany do wysłania komunikatu odpowiedzi z powrotem do inicjatora.KONIEC KONWERSACJI instrukcja 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

Pomyślnie odebrano komunikat żądania i wysłana wiadomość odpowiedzi do usługa inicjatora.Następnie zostanie komunikat odpowiedzi z kolejki inicjatora i zakończyć konwersację.See Lekcja 6: Odbieranie odpowiedzi i kończenie konwersacji.