Partager via


Leçon 5 : Réception d'une demande et envoi d'une réponse

Nouveau : 15 septembre 2007

Dans cette leçon, vous allez apprendre à recevoir un message de demande de la file d'attente côté cible et à envoyer un message de réponse au service initiateur. Réalisez ces procédures à partir d'une copie de Management Studio qui s'exécute sur le même ordinateur que l'instance cible du Moteur de base de données.

Procédures

Basculer vers la base de données TargetDB

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête, puis exécutez-le de manière basculer le contexte vers la base de données InstTargetDB sur laquelle vous recevrez le message de demande et renverrez une message de réponse à la base de données InstInitiatorDB.

    USE InstTargetDB;
    GO
    

Recevoir la demande et envoyer une réponse

  1. Copiez et collez le code suivant dans une fenêtre d'éditeur de requête, puis exécutez-le de manière à recevoir le message de réponse de la file d'attente InstTargetQueue et à renvoyer un message de réponse à l'initiateur. L'instruction RECEIVE récupère le message de demande. L'instruction SELECT qui suit affiche le texte afin que vous puissiez vérifier qu'il s'agit bien du message qui a été envoyé à l'étape précédente. L'instruction IF teste si le message reçu est un message de demande et si une instruction SEND est utilisée pour renvoyer un message de réponse à l'initiateur. L'instruction END CONVERSATION est utilisée pour terminer la conversation côté cible. La dernière instruction SELECT affiche le texte du message de réponse.

    DECLARE @RecvReqDlgHandle UNIQUEIDENTIFIER;
    DECLARE @RecvReqMsg NVARCHAR(100);
    DECLARE @RecvReqMsgName sysname;
    
    BEGIN TRANSACTION;
    
    RECEIVE TOP(1)
        @RecvReqDlgHandle = conversation_handle,
        @RecvReqMsg = message_body,
        @RecvReqMsgName = message_type_name
    FROM InstTargetQueue;
    
    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
    

Étapes suivantes

Vous avez reçu le message de demande et envoyé un message de réponse au service initiateur. Vous allez ensuite recevoir le message de réponse de la file d'attente côté initiateur et terminer la conversation. Consultez Leçon 6 : Réception de la réponse et fin de la conversation.

Voir aussi

Autres ressources

END CONVERSATION (Transact-SQL)
RECEIVE (Transact-SQL)
SEND (Transact-SQL)
WAITFOR (Transact-SQL)
Service Broker Programming Basics

Aide et Informations

Assistance sur SQL Server 2005