Lezione 5: Ricezione di una richiesta e invio di una risposta
Si applica a:SQL ServerIstanza gestita di SQL di Azure
In questa lezione si apprenderà come ricevere un messaggio di richiesta dalla coda di destinazione e inviare un messaggio di risposta al servizio di origine. Eseguire questa procedura da una copia di Management Studio in esecuzione nello stesso computer dell'istanza di destinazione del motore di database.
Procedure
Passare al database TargetDB
Copiare il seguente codice e incollarlo nella finestra dell'Editor di query. Eseguire quindi il codice per cambiare contesto passando al database InstTargetDB in cui si riceverà il messaggio di richiesta e si invierà un messaggio di risposta a InstInitiatorDB.
USE InstTargetDB; GO
Ricevere la richiesta e inviare una riposta
Copiare il seguente codice e incollarlo nella finestra dell'Editor di query. Eseguire quindi il codice per ricevere il messaggio di risposta da InstTargetQueue e inviare un messaggio di risposta all'initiator. L'istruzione RECEIVE recupera il messaggio di richiesta. La seguente istruzione SELECT mostra quindi il testo, in modo da poter verificare che sia lo stesso messaggio inviato nel passaggio precedente. L'istruzione IF verifica se il messaggio ricevuto è un tipo di messaggio di richiesta e se viene usata un'istruzione SEND per inviare un messaggio di risposta all'iniziatore. L'istruzione END CONVERSATION è usata per terminare il lato di destinazione della conversazione. L'ultima istruzione SELECT mostra il testo del messaggio di risposta.
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
Passaggi successivi
Il messaggio di richiesta è stato ricevuto ed è stato inviato un messaggio di risposta al servizio di origine. Quindi, si riceverà il messaggio di risposta dalla coda dell'iniziatore e si terminerà la conversazione. Per altre informazioni, vedere Lezione 6: Ricezione della risposta e fine della conversazione.
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per