Udostępnij za pośrednictwem


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.