Pular para o conteúdo principal

Message Router

Descrição​

O Message Router é um tipo especial de filtro que fica entre canais de mensagens. Ele consome uma mensagem de um canal de entrada e a republica em um entre vários canais de saída, de acordo com um conjunto de condições. O conteúdo da mensagem não é alterado: o roteador se preocupa apenas com o destino.

Em um Pipes and Filters comum, cada filtro tem uma entrada e uma saída. O roteador quebra essa simetria ao ter várias saídas, e os componentes ao redor não sabem que ele existe. Isso desacopla as etapas de processamento: remetente e destinatários só conhecem seus canais.

Esse é o padrão-base da família de roteadores (Content-Based Router, Message Filter, Dynamic Router, Recipient List, entre outros), que variam na forma de decidir o destino.

Problemas que resolve​

  • Etapas de um pipeline ligadas por canais precisam enviar mensagens a filtros diferentes conforme condições
  • Regras de decisão espalhadas pelos componentes dificultam a manutenção
  • Mudanças em tipos de mensagem ou em processadores obrigam a alterar vários componentes

Quando usar​

  • A decisão de destino deve ficar fora do remetente e dos destinatários
  • É preciso centralizar as regras de encaminhamento em um único ponto
  • O fluxo deve ser reconfigurável sem tocar nos componentes de processamento

Quando evitar​

  • Há um único destino possível; o roteador seria só um salto a mais
  • A decisão pode ser resolvida pela própria infraestrutura de canais (por exemplo, assinaturas em um canal publish-subscribe)

Trade-offs​

GanhoCusto / Risco
Lógica de roteamento centralizada e fácil de mudarO roteador pode virar ponto de acoplamento e gargalo
Remetentes e destinatários desacopladosUm salto extra por mensagem
Mensagens passam por um ponto único, preservando a ordem de chegadaUm roteador único serializa o tratamento; paralelizá-lo exige cuidado com a ordem
  • Observabilidade: o roteador é um bom lugar para registrar e medir o tráfego.
  • Variantes: a escolha entre elas depende de quem conhece os destinos e de como a regra evolui.

Diagrama​

O roteador lê uma mensagem do canal de entrada e a encaminha, sem modificá-la, para o canal cuja condição ela satisfaz.

Padrões relacionados​

Referência​