Compartilhar via


Iniciar e parar a fila do Service Broker

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Use a instrução ALTER QUEUE para iniciar e parar uma fila. Quando uma fila é iniciada, ela está disponível para enviar e receber mensagens. Quando uma fila é interrompida, o Service Broker não entrega novas mensagens para a fila e não permite que os aplicativos recebam mensagens da fila.

Os administradores criam frequentemente filas em um estado indisponível. Esse estado impede que o Service Broker coloque mensagens na fila até que todos os objetos de um serviço sejam criados. Quando o serviço estiver pronto para receber mensagens, o administrador torna a fila disponível com a seguinte instrução:

ALTER QUEUE dbo.ExpenseQueue
    WITH STATUS = ON;

A seguinte instrução torna a fila indisponível para recebimento:

ALTER QUEUE dbo.ExpenseQueue
    WITH STATUS = OFF;

Quando uma fila não está disponível para recebimento, um aplicativo não pode processar as mensagens na fila. Como o Service Broker garante que uma mensagem saia apenas da fila como parte de uma operação de recebimento, não há como remover mensagens de uma fila parada. O Service Broker foi projetado para permitir a manutenção enquanto a fila continua a receber mensagens, portanto, raramente é necessário parar uma fila depois que a fila é disponibilizada. Como a maioria dos procedimentos armazenados de ativação é encerrada quando uma RECEIVE operação falha ou quando não há mais mensagens disponíveis, um motivo para parar a fila é substituir um procedimento armazenado de ativação para um serviço que recebe mensagens constantemente.

Quando chega uma mensagem para uma indisponível, o Service Broker mantém a mensagem na fila de transmissão para o banco de dados, em vez de entregar a mensagem à fila.