Condividi tramite


Avvio e interruzione di una coda

Per avviare e interrompere una coda, utilizzare l'istruzione ALTER QUEUE. Quando una coda è avviata, è disponibile per l'invio e la ricezione dei messaggi. Quando una coda è interrotta, Service Broker non recapita nuovi messaggi alla coda e non consente alle applicazioni di ricevere messaggi dalla coda.

Gli amministratori creano spesso code con stato non disponibile, per impedire a Service Broker di inserire messaggi nella coda finché non vengono creati tutti gli oggetti per un servizio. Quando il servizio è pronto a ricevere i messaggi, l'amministratore rende disponibile la coda con l'istruzione seguente:

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = ON ;

L'istruzione seguente rende la coda non disponibile per la ricezione:

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = OFF ;

Quando una coda non è disponibile per la ricezione, le applicazioni non possono elaborare i messaggi presenti nella coda. Service Broker consente a un messaggio di lasciare la coda solo nell'ambito di un'operazione di ricezione. Non è quindi possibile rimuovere messaggi da una coda interrotta. Service Broker è progettato per consentire la manutenzione durante la ricezione di messaggi da parte della coda. Si verifica quindi raramente la necessità di interrompere una coda dopo che questa viene resa disponibile. La maggior parte delle stored procedure di attivazione termina quando non è possibile eseguire un'operazione RECEIVE o non vi sono più messaggi disponibili. Pertanto, l'interruzione di una coda può essere giustificata dalla necessità di sostituire una stored procedure di attivazione per un servizio che riceve costantemente messaggi.

Quando arriva un messaggio per una coda non disponibile, anziché recapitarlo alla coda Service Broker lo mantiene nella coda di trasmissione per il database.

Vedere anche

Riferimento