Pular para o conteúdo principal

Content Enricher

Descrição​

O Content Enricher é um transformador especializado que completa uma mensagem com dados que o destinatário precisa e que o remetente não enviou. Ele usa campos-chave da mensagem recebida (um CEP, um identificador de cliente, um número de pedido) para obter a informação ausente e a acrescenta ao conteúdo.

A informação pode vir de três fontes: de um cálculo (derivar o estado a partir do CEP), do ambiente (um timestamp atual) ou de outro sistema (banco de dados, arquivo, serviço, diretório). O último caso é o mais comum e é o que torna o padrão útil em integrações.

Com isso, remetentes não precisam carregar todos os campos que qualquer destinatário possa vir a exigir, e as mensagens permanecem enxutas na origem.

Problemas que resolve​

  • O destinatário precisa de dados (nome e endereço) que a mensagem não traz (apenas um ID de cliente).
  • O remetente não tem acesso à informação adicional ou não deveria ser responsável por ela.
  • Diferentes destinatários exigem dados distintos, e embutir tudo na mensagem original a incharia.
  • Etapas posteriores precisam recuperar dados que foram removidos antes (por exemplo, com Claim Check).

Quando usar​

  • A origem não consegue fornecer todos os dados que o destino precisa, mas eles estão disponíveis em uma fonte confiável.
  • É necessário converter identificadores em informação completa antes de roteamento ou processamento.
  • Dados guardados temporariamente por um Claim Check precisam voltar à mensagem.

Quando evitar​

  • A informação adicional não é confiável ou muda tão rápido que o valor consultado fica inconsistente.
  • A consulta ao sistema externo é lenta ou pouco disponível e pode se tornar gargalo para o fluxo.
  • O próprio remetente pode enviar o dado sem custo; enriquecer depois só adiciona dependência.

Trade-offs​

GanhoCusto / Risco
Mensagens menores e remetentes simplesDependência de uma fonte de dados externa a cada mensagem
Destinatários recebem dados completosLatência adicional pela consulta
Enriquecimento centralizado e reutilizávelRisco de dados desatualizados ou inconsistentes em relação ao momento do evento
Evita duplicar lógica de busca em vários consumidoresFalhas na fonte afetam o fluxo inteiro (exige retry, cache ou fallback)
  • Considere usar cache para consultas repetidas e defina o comportamento quando a fonte estiver indisponível.
  • Decida se a mensagem enriquecida preserva os campos originais ou os substitui.

Diagrama​

O enricher usa uma chave da mensagem para buscar os dados ausentes na fonte e entrega ao destinatário a mensagem completa.

Padrões relacionados​

  • Content Filter — o inverso: remove dados desnecessários em vez de adicionar.
  • Message Translator — o enriquecimento por cálculo se aproxima de uma tradução simples.
  • Claim Check — o dado guardado é recuperado depois por um enricher.
  • Envelope Wrapper — outra forma de adicionar informação à mensagem, voltada aos cabeçalhos.
  • Message Filter — descarta mensagens inteiras, não altera o conteúdo.
  • Message Channel — canal pelo qual a mensagem enriquecida segue.

Referência​