Reencaminhamento de mensagens do Service Broker

Aplica-se a:SQL ServerAzure SQL Managed Instance

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 o encaminhamento de mensagens 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 está habilitado, a tabela de roteamento em msdb.sys.routes determina se uma mensagem que chega de outra instância é encaminhada. Se o endereço da rota correspondente não for LOCAL, o SQL Server encaminhará a mensagem para o endereço especificado. Caso contrário, a mensagem é 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. Apenas o destino final reconhece a mensagem. Se o remetente não receber uma confirmação do destino após um período de tempo, o remetente tentará novamente 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 mensagens para serem encaminhadas na memória. A quantidade de memória disponível para encaminhamento de mensagens é especificada como parte da configuração do ponto de extremidade do Service Broker. Essa estratégia permite o encaminhamento eficiente e sem monitoração de estado. Caso uma instância que executa o encaminhamento de mensagens falhe, nenhuma mensagem será perdida. Cada mensagem é sempre mantida no remetente até que o destino final a reconheça, conforme descrito nos protocolos de comunicação do Service Broker.

A visualização sys.dm_broker_forwarded_messages de gestão contém informações sobre mensagens que a instância está atualmente a encaminhar. Uma instância não persiste mensagens no processo de encaminhamento; Estas mensagens existem apenas na memória. A instância que enviou a mensagem e a instância que recebe a mensagem persistem as mensagens. A instância de envio não remove a mensagem até que a instância de recebimento confirme 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, apenas os bancos de dados que participam da conversa devem ter a segurança da caixa de diálogo configurada.

No entanto, como a segurança de transporte se aplica às conexões entre instâncias do SQL Server, cada instância do SQL Server deve ter a segurança de transporte configurada corretamente para as instâncias com as quais se comunica diretamente. Por exemplo, se a Instância A e a Instância B se comunicarem por meio de uma instância de encaminhamento, tanto a Instância A quanto a Instância B deverão ter a segurança de transporte configurada corretamente para a instância de encaminhamento. Como as instâncias não trocam mensagens diretamente, elas não devem ter a segurança de transporte configurada para se comunicar entre si.