Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
O Service Broker usa rotas para determinar onde entregar mensagens. Quando um serviço envia uma mensagem em uma conversa, o SQL Server usa rotas para localizar o serviço que receberá a mensagem. Quando esse serviço responde, o SQL Server usa novamente rotas para localizar o serviço inicial. Por padrão, cada banco de dados contém uma rota que especifica que as mensagens para qualquer serviço que não tenha uma rota explícita sejam entregues dentro da instância do SQL Server.
Existem três componentes básicos de uma rota:
Nome do serviço
O nome do serviço para o qual essa rota especifica o endereço. Esse nome deve ser uma correspondência exata para o Nome do Serviço no
BEGIN DIALOGcomando.Identificador de instância do broker
Um identificador exclusivo para um banco de dados específico para o qual enviar as mensagens. Esta é a
service_broker_guidcoluna na linha dasys.databasestabela para o banco de dados para o qual essa rota aponta.Endereço de rede
Um endereço de máquina real, uma palavra-chave que restringe a rota para a máquina local ou uma palavra-chave que indica que a camada de transporte deduz o endereço do nome do serviço. Um endereço de rede pode ser o endereço do broker que hospeda o serviço ou pode ser o endereço de um broker de encaminhamento.
Para determinar a rota de uma conversa, o SQL Server faz a correspondência entre o nome do serviço e o identificador da instância do agente especificados na instrução com o BEGIN DIALOG CONVERSATION nome do serviço e o identificador da instância do agente especificados na rota. As rotas que não fornecem um nome de serviço correspondem a qualquer nome de serviço. As rotas que não fornecem um identificador de instância de broker correspondem a qualquer identificador de instância de broker. Quando mais de uma rota corresponde a uma conversa, o SQL Server seleciona uma rota, conforme descrito em Roteamento do Service Broker.
O SQL Server garante que, uma vez que o destino reconhece a primeira mensagem, todas as mensagens subsequentes nessa conversa são encaminhadas para o mesmo banco de dados. No entanto, não é garantido que outras conversas no mesmo grupo de conversação sejam roteadas para o mesmo banco de dados. Se um aplicativo exigir que as mensagens em conversas relacionadas sejam roteadas para o mesmo banco de dados, o aplicativo deverá fornecer um identificador de instância do agente quando o aplicativo iniciar uma conversa.
Por padrão, cada banco de dados de usuário contém a rota AutoCreatedLocal. Essa rota corresponde a qualquer nome de serviço e instância de agente e especifica que a mensagem deve ser entregue dentro da instância atual. Para cenários simples em que o iniciador e o destino da conversa existem na mesma instância do SQL Server, não são necessárias rotas adicionais. No entanto, a criação de uma rota para cada serviço ajuda a proteger contra a modificação ou queda da rota AutoCreatedLocal .