Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Istanza 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 iniziatore. Eseguire questi passaggi 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 e incollare il codice seguente in una finestra dell'editor di query, quindi eseguirlo per passare al contesto al database InstTargetDB in cui viene visualizzato il messaggio di richiesta e inviare 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
RECEIVErecupera il messaggio di richiesta, quindi l'istruzione seguenteSELECTvisualizza il testo in modo da poter verificare che sia lo stesso messaggio inviato nel passaggio precedente. L'istruzioneIFverifica se il messaggio ricevuto è un tipo di messaggio di richiesta e se viene usata un'istruzioneSENDper inviare un messaggio di risposta all'iniziatore. L'istruzioneEND CONVERSATIONviene usata per terminare il lato di destinazione della conversazione. L'istruzione finaleSELECTvisualizza il testo del messaggio di risposta.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
Contenuti correlati
- END CONVERSATION (Transact-SQL)
- RECEIVE (Transact-SQL)
- SEND (Transact-SQL)
- WAITFOR (Transact-SQL)
- Applicazioni di Service Broker
Passo successivo
Hai ricevuto con successo il messaggio di richiesta e inviato un messaggio di risposta al servizio di origine. Si riceve quindi il messaggio di risposta dalla coda dell'iniziatore e si termina la conversazione.