Lektion 5: Empfangen einer Anforderung und Senden einer Antwort
Neu: 15. September 2007
In dieser Lektion lernen Sie, wie eine Anforderungsnachricht von der Zielwarteschlange empfangen und eine Antwortnachricht an den Initiatordienst gesendet wird. Führen Sie diese Schritte mit einer Kopie von Management Studio aus, die auf dem gleichen Computer wie die Zielinstanz von Datenbankmodul ausgeführt wird.
Vorgehensweisen
Wechseln zur TargetDB-Datenbank
Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn danach aus, um den Kontext zur InstTargetDB-Datenbank zu wechseln, wo Sie die Anforderungsnachricht empfangen und eine Antwortnachricht an die InstInitiatorDB senden.
USE InstTargetDB; GO
Empfangen der Anforderung und Senden einer Antwort
Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn danach aus, um die Antwortnachricht aus InstTargetQueue zu empfangen und eine Antwortnachricht an den Initiator zu senden. Die RECEIVE-Anweisung ruft die Anforderungsnachricht ab. Anschließend wird durch folgende SELECT-Anweisung der Text angezeigt, so dass Sie überprüfen können, ob es dieselbe Nachricht ist, die im vorherigen Schritt gesendet wurde. Die IF-Anweisung testet, ob die empfangene Nachricht eine Anforderungsnachricht ist und ob eine SEND-Anweisung zum Senden einer Antwortnachricht an den Initiator verwendet wurde. Die END CONVERSATION-Anweisung wird verwendet, um die Zielseite der Konversation zu beenden. Die abschließende SELECT-Anweisung zeigt den Text der Antwortnachricht an.
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
Nächste Schritte
Sie haben die Anforderungsnachricht erfolgreich empfangen und eine Antwortnachricht an den Initiatordienst gesendet. Als Nächstes empfangen Sie die Antwortnachricht von der Initiatorwarteschlange und beenden die Konversation. Siehe Lektion 6: Empfangen der Antwort und Beenden der Konversation.
Siehe auch
Andere Ressourcen
END CONVERSATION (Transact-SQL)
RECEIVE (Transact-SQL)
SEND (Transact-SQL)
WAITFOR (Transact-SQL)
Service Broker Programming Basics