Iniciar y detener la cola de Service Broker

Se aplica a:SQL ServerAzure SQL Managed Instance

Use la ALTER QUEUE instrucción para iniciar y detener una cola. Cuando se inicia una cola, está disponible para enviar y recibir mensajes. Cuando se detiene una cola, Service Broker no entrega nuevos mensajes a la cola y no permite que las aplicaciones reciban mensajes de la cola.

A menudo los administradores crean colas en un estado no disponible. Este estado impide que Service Broker coloque mensajes en la cola hasta que se creen todos los objetos de un servicio. Cuando el servicio está listo para recibir mensajes, el administrador activa la cola con la siguiente instrucción:

ALTER QUEUE dbo.ExpenseQueue
    WITH STATUS = ON;

La siguiente instrucción desactiva la cola para la recepción:

ALTER QUEUE dbo.ExpenseQueue
    WITH STATUS = OFF;

Cuando una cola no está disponible para recibirla, una aplicación no puede procesar los mensajes de la cola. Dado que Service Broker garantiza que un mensaje solo sale de la cola como parte de una operación de recepción, no hay forma de quitar mensajes de una cola detenida. Service Broker está diseñado para permitir el mantenimiento mientras la cola sigue recibiendo mensajes, por lo que rara vez es necesario detener una cola una vez que la cola esté disponible. Dado que la mayoría de los procedimientos almacenados de activación salen cuando se produce un error en una RECEIVE operación o cuando no hay más mensajes disponibles, una razón para detener la cola es reemplazar un procedimiento almacenado de activación para un servicio que recibe mensajes constantemente.

Cuando un mensaje llega a una cola que no está disponible, Service Broker mantiene el mensaje en la cola de transmisión de la base de datos en lugar de entregar el mensaje a la cola no disponible.