Compartilhar via


Encaminhamento de mensagens do Service Broker

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

O encaminhamento de mensagens do Service Broker permite que uma instância do SQL Server aceite mensagens de fora da instância e envie essas mensagens para uma instância diferente.

Um administrador pode usar encaminhamento de mensagem para:

  • Forneça conectividade entre servidores em diferentes domínios de confiança.

  • Simplifique a administração criando uma única instância centralizada que contém as informações de roteamento de um domínio.

  • Distribua o trabalho entre várias instâncias.

Quando o encaminhamento é habilitado, a tabela de roteamento msdb.sys.routes determina se uma mensagem que chega de outra instância é encaminhada. Se o endereço para a rota correspondente não for LOCAL, o SQL Server encaminha a mensagem para o endereço especificado. Caso contrário, a mensagem será entregue localmente.

Cada mensagem do Service Broker contém um tempo de vida máximo e uma contagem do número de vezes que a mensagem foi encaminhada. Quando uma instância encaminha a mensagem, essa instância aumenta a contagem na mensagem. Se a mensagem exceder o tempo de vida máximo, a instância de encaminhamento descartará a mensagem. Essa estratégia ajuda a evitar problemas em situações em que um loop de roteamento pode existir.

Encaminhamento e entrega confiável

Uma instância que encaminha uma mensagem não reconhece a mensagem para o remetente. Somente o destino final confirma a mensagem. Se o remetente não receber uma confirmação do destino após um período de tempo, o remetente repetirá a mensagem.

Uma instância que executa o encaminhamento de mensagens não precisa armazenar mensagens encaminhadas. Em vez disso, o SQL Server mantém as mensagens a serem enviadas na memória. A quantidade de memória disponível para encaminhamento de mensagem é especificada como parte da configuração de ponto de extremidade do Service Broker. Essa estratégia permite encaminhamento eficiente e sem monitoração de estado. Caso haja falha no encaminhamento de mensagem executado por uma instância, nenhuma mensagem será perdida. Cada mensagem é sempre mantida no remetente até que o destino final reconheça a mensagem, conforme descrito nos protocolos de comunicação do Service Broker.

A visualização de sys.dm_broker_forwarded_messages gerenciamento contém informações sobre mensagens que estão atualmente em processo de encaminhamento pela instância. Uma instância não persiste mensagens no processo de encaminhamento; essas mensagens existem apenas na memória. A instância que enviou a mensagem e a instância que recebe a mensagem mantêm as mensagens. A instância de envio não remove a mensagem até que a instância de recebimento reconheça o recebimento da mensagem.

Segurança e encaminhamento

O encaminhamento de mensagens do Service Broker não requer uma instância de encaminhamento para descriptografar a mensagem encaminhada. Portanto, somente os bancos de dados que participam da conversa devem ter segurança de diálogo configurada.

Entretanto, como a segurança do transporte aplica-se a conexões entre instâncias do SQL Server, cada instância do SQL Server deve ter segurança de transporte corretamente configurada para as instâncias com as quais se comunica diretamente. Por exemplo, se a Instância A e a Instância B se comunicam através de uma instância de encaminhamento, então a Instância A e a Instância B devem ter segurança de transporte corretamente configurada para a instância de encaminhamento. Como as instâncias não trocam mensagens diretamente, as instâncias não devem ter a segurança de transporte configurada para se comunicarem entre si.