Pular para o conteúdo principal

Content-Based Router

Descrição​

O Content-Based Router examina o conteúdo de cada mensagem e a envia para um canal escolhido a partir dos dados dela. Os critérios podem ser a existência de um campo, o valor de um campo ou uma combinação de verificações.

O exemplo clássico é um pedido que, depois de validado, precisa de uma checagem de estoque. Se existem vários sistemas de estoque, cada um responsável por certos itens, o roteador lê o item do pedido e o encaminha ao sistema correto, de modo que uma função lógica implementada por vários sistemas físicos seja vista como uma só.

Em cenários mais sofisticados, o roteador evolui para um mecanismo de regras configuráveis.

Problemas que resolve​

  • Uma função lógica está distribuída entre vários sistemas, cada um tratando um subconjunto das mensagens
  • O destino correto depende de dados dentro da mensagem
  • Remetentes não devem conhecer a topologia dos destinatários

Quando usar​

  • O destino varia conforme tipo, valor ou presença de campos da mensagem
  • É preciso esconder do remetente a divisão de responsabilidades entre sistemas
  • As regras de roteamento mudam e precisam ficar em um único lugar

Quando evitar​

  • O destino pode ser decidido pelo remetente de forma trivial
  • Os destinatários precisam se registrar dinamicamente; considere o Dynamic Router
  • Os destinatários mudam com frequência e o roteador viraria um ponto de alteração constante

Trade-offs​

GanhoCusto / Risco
Roteamento adaptado ao conteúdoO roteador depende do formato das mensagens e dos destinos
Regras centralizadas e configuráveisPode exigir alterações frequentes quando surgem novos destinos
Remetente alheio à topologiaMotor de regras adiciona complexidade
  • Manutenção: projete o roteador para ser fácil de alterar, pois ele tende a ser um ponto quente de mudança.
  • Mensagens sem regra: defina um destino padrão ou um canal de mensagens inválidas.

Diagrama​

O roteador lê o item do pedido e o encaminha ao sistema de estoque responsável por ele.

Padrões relacionados​

Referência​