Sistema de Mensagens de Publicação/Assinatura em Múltiplos Barramentos
Na integração de serviço, o sistema de mensagens de publicação/assinatura usa os destinos de espaço de tópico, em que cada destino de espaço de tópico representa um conjunto de tópicos de "publicação e assinatura". Quando múltiplos barramentos são conectados usando um link do barramento de integração de serviços, as mensagens publicadas em um espaço de tópico em um barramento são acessíveis aos assinantes em um espaço de tópico em outro barramento.
O tópico para uma mensagem específica (publicação) é a propriedade da mensagem. Um destino do espaço de tópico não está localizado em um membro de barramento específico. A integração de serviço mantém uma lista de assinaturas no espaço de tópico e faz a correspondência entre cada publicação e essa lista. Quando uma nova publicação corresponde a uma ou mais assinaturas no espaço de tópico, a integração de serviço entrega uma cópia da publicação para cada assinante; se necessário, a integração de serviço pode enfileirar a mensagem de publicação até que o assinante esteja pronto para recebê-la. Quando a nova publicação não corresponde a nenhuma assinatura, a integração de serviços descarta a publicação.
Os assinantes podem receber os tópicos que estão publicados em um barramento remoto, contanto que haja uma conexão configurada entre os barramentos. É possível configurar um barramento que se conecta e que troca mensagens com outras redes do sistema de mensagens. Para fazer isso, você deve configurar um barramento externo. Uma conexão de barramento externo encapsula informações relacionadas à rede do sistema de mensagens remoto, como o tipo de barramento externo e se os aplicativos do sistema de mensagens são permitidos para enviar mensagens para o barramento externo.
Para conectar destinos de espaço de tópico em barramentos vizinhos, você configura os mapeamentos de espaço de tópico ao criar uma conexão de barramento externo. Cada entrada no mapeamento mapeia um destino de espaço de tópico local para um espaço de tópico no barramento externo. Em seguida, os assinantes dos tópicos no espaço de tópico no barramento local podem receber as mensagens que estão publicadas nesses tópicos no espaço de tópico no barramento externo. Os aplicativos de publicação/assinatura criam produtores e assinaturas para espaços de tópico em seus barramentos locais, em vez dos barramentos externos (ao contrário de aplicativos ponto a ponto e destinos de fila). Você deve configurar os mapeamentos de espaço de tópico para que as mensagens publicadas pelos aplicativos sejam roteadas corretamente.

Se existirem assinaturas nos dois barramentos e os publicadores puderem publicar de qualquer um dos dois, um mapeamento de espaço de tópico será necessário nos dois barramentos para permitir que as publicações fluam entre todos os publicadores e assinantes nos dois barramentos.
Ao conectar espaços de tópico em mais de dois barramentos, não há restrição sobre a forma de conexão dos múltiplos barramentos. Entretanto, há uma restrição sobre como seus espaços de tópico são conectados utilizando mapeamentos de espaço de tópico. Para obter orientação sobre como criar mapeamentos do espaço de tópico, consulte Configurando Mapeamentos de Espaços de Tópicos Entre Barramentos de Integração de Serviço.
Uma rede de barramentos pode conter loops em sua topologia, conforme mostrado na Figura 2. Espaços de tópico interconectados devem obedecer a um formato em árvore hierárquica. Essa árvore pode então ser sobreposta na topologia de barramento subjacente usando mapeamentos de espaço de tópico, conforme mostrado na Figura 2. Não é permitido que um conjunto de espaços de tópico interconectados formem um loop entre os vários barramentos, conforme mostrado em Figura 3.


O exemplo correto na Figura 2 mostra que as mensagens publicadas no Barramento 2 fluirão automaticamente do Barramento 1 ao Barramento 3, se o Barramento 3 tiver uma assinatura adequada para essas mensagens. Crie um mapeamento do espaço de tópico no Barramento 1 para o espaço de tópico no Barramento 2, e outro mapeamento do espaço de tópico no Barramento 3 para o espaço de tópico no Barramento 1.
Se você também tiver criado um mapeamento do espaço de tópico no Barramento 2 para o espaço de tópico no Barramento 3, conforme mostrado na Figura 3, será criado um loop e as mensagens publicadas poderão entrar em um loop indefinido e serem transmitidas continuamente ao redor dos três barramentos.
Se existir uma assinatura adicional para as mensagens no Barramento 2 e um publicador também estiver conectado ao Barramento 3, os mapeamentos de espaço de tópico serão necessários na direção reversa para permitir que as mensagens fluam para todas as assinaturas do sistema, conforme mostrado na Figura 4.
