Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Managed Instance
Dans cette leçon, vous allez apprendre à recevoir un message de demande de la file d’attente cible et à envoyer un message de réponse au service initiateur. Exécutez ces étapes à 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
Copiez et collez le code suivant dans une fenêtre de l’Éditeur de requête, puis exécutez-la pour basculer le contexte vers la base de données InstTargetDB où vous recevez le message de demande et renvoyez un message de réponse à InstInitiatorDB.
USE InstTargetDB; GO
Recevoir la demande et envoyer une réponse
Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Ensuite, exécutez-le pour recevoir le message de réponse de InstTargetQueue et envoyer un message de réponse à l’initiateur. L’instruction
RECEIVErécupère le message de requête, puis l’instruction suivanteSELECTaffiche le texte afin de pouvoir vérifier qu’il s’agit du même message envoyé à l’étape précédente. L’instructionIFteste si le message reçu est un type de message de demande et si uneSENDinstruction est utilisée pour renvoyer un message de réponse à l’initiateur. L’instructionEND CONVERSATIONest utilisée pour mettre fin au côté cible de la conversation. L’instruction finaleSELECTaffiche le texte du message de réponse.DECLARE @RecvReqDlgHandle AS UNIQUEIDENTIFIER; DECLARE @RecvReqMsg AS NVARCHAR (100); DECLARE @RecvReqMsgName AS 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 AS 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
Contenu connexe
- END CONVERSATION (Transact-SQL)
- RECEIVE (Transact-SQL)
- SEND (Transact-SQL)
- WAITFOR (Transact-SQL)
- Applications de Service Broker
Étape suivante
Vous avez reçu le message de demande et envoyé un message de réponse au service initiateur. Ensuite, vous recevez le message de réponse de la file d’attente de l’initiateur et terminez la conversation.