Compartilhar via


Criando filas do Service Broker

Uma fila retém mensagens de entrada para um serviço. Para simplificar o processamento, os aplicativos normalmente criam uma fila por serviço em vez de usar a mesma fila para vários serviços.

A definição da opção de retenção para uma fila faz com que as mensagens sejam retidas depois de serem processadas. Como a retenção reduz o desempenho do aplicativo, especifique a retenção somente se o aplicativo requerer acesso persistente às mensagens exatas enviadas e recebidas. Para obter mais informações sobre retenção de mensagem, consulte Retenção de mensagem.

Para aplicativos que não usam ativação interna, não especifique uma cláusula de ativação na definição da fila.

Para aplicativos que usam ativação interna, a definição da fila inclui o nome do procedimento armazenado, o número máximo de leitores para o SQL Server iniciar e o nome do principal do banco de dados para representar antes de iniciar o procedimento armazenado.

O nome de uma fila não é incluído no formato de rede de uma mensagem. As filas são objetos possuídos por esquema. Portanto, os nomes de fila adotam as convenções de nomenclatura do SQL Server. Para obter mais informações sobre nomenclatura, consulte Nomeando objetos do Service Broker.

Ativação de procedimento armazenado

Uma fila pode ser associada a um procedimento armazenado. O SQL Server ativa o procedimento armazenado quando há mensagens na fila a ser processada. Esse processo de ativação automática permite que um aplicativo do Service Broker seja dimensionado dinamicamente de acordo com a carga de processamento atual no aplicativo. Cada procedimento armazenado ativado pelas execuções do Service Broker em um thread separado. Quando uma fila especifica um procedimento armazenado, o Service Broker inicia novas instâncias do procedimento armazenado conforme exigido, até o número máximo de instâncias especificadas para a fila.

Um procedimento armazenado ativado normalmente processa uma ou mais mensagens e retorna uma resposta ao serviço que originou as mensagens. Quando as mensagens chegam mais rápido que as mensagens dos processos de procedimento armazenado, o Service Broker inicia outra instância do procedimento armazenado, até o número máximo definido pela fila. Um procedimento armazenado ativado normalmente é encerrado quando o procedimento não localiza nenhuma mensagem disponível na fila durante algum tempo.

O uso de procedimentos armazenados de ativação é um modo comum de criar aplicativos do Service Broker. Porém, outros designs podem se ajustar melhor às necessidades de um aplicativo específico. Qualquer aplicativo que pode executar lotes do Transact-SQL no SQL Server pode enviar e receber mensagens. As mensagens também podem ser processadas por qualquer procedimento armazenado, independentemente de o procedimento armazenado ser ativado pelo SQL Server, iniciado pelo Agente do SQL Server, executado por um aplicativo externo ou executado interativamente por uma ferramenta como SQL Server Management Studio ou SQL Server Express Management Studio.