Iniciar y detener la cola
Utilice la instrucción ALTER QUEUE para iniciar y detener una cola. Cuando se inicia una cola, está disponible para enviar y recibir mensajes. Cuando se detiene, Service Broker no entrega mensajes nuevos 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. Así se evita que Service Broker coloque mensajes en la cola hasta que se hayan creado 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 la recepción, las aplicaciones no pueden procesar los mensajes de la cola. Dado que Service Broker garantiza que un mensaje sólo abandona la cola como parte de una operación de recepción, no se pueden eliminar los mensajes de una cola detenida. Service Broker está diseñado para permitir el mantenimiento mientras la cola continúa recibiendo mensajes, por lo que no suele ser necesario detener una cola una vez que está disponible. La mayoría de los procedimientos almacenados de activación salen cuando se produce un error en una operación RECEIVE o cuando no hay más mensajes disponibles; así, un motivo para detener la cola puede ser el reemplazo de un procedimiento almacenado de activación para un servicio que recibe mensajes de forma constante.
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.