Pular para o conteúdo principal

Wire Tap

Descrição​

O Wire Tap é uma derivação passiva num canal ponto a ponto. Funciona como uma Recipient List fixa com duas saídas: cada mensagem é copiada, sem alteração, para o destino original e para um canal secundário.

A lógica de análise (monitoramento, auditoria, depuração) fica em um componente separado que consome o canal secundário. Como o canal principal não muda de comportamento, o tap pode ser inserido em quase qualquer canal com baixo risco para a solução existente.

Problemas que resolve​

  • Canais ponto a ponto entregam cada mensagem a um único consumidor, o que impede inspecionar todo o tráfego.
  • Necessidade de testar, monitorar e diagnosticar fluxos sem alterar os componentes envolvidos.
  • Reaproveitar uma instrumentação genérica em vários canais.

Quando usar​

  • Monitoramento e auditoria de mensagens em canais ponto a ponto.
  • Diagnóstico de problemas em ambientes onde não se pode alterar o produtor nem o consumidor.
  • Alimentar um Message Store ou ferramentas de análise com cópias do tráfego.

Quando evitar​

  • Em canais publish-subscribe, em que basta adicionar outro assinante.
  • Quando as cópias contêm dados sensíveis e o canal secundário não tem a mesma proteção do original.
  • Quando for preciso modificar ou redirecionar mensagens, caso em que Detour é mais adequado.

Trade-offs​

GanhoCusto / Risco
Observação sem alterar o fluxo principalDuplica o volume de mensagens e o consumo de recursos
Fácil de acrescentar a canais existentesA cópia pode vazar dados sensíveis se o canal secundário for menos protegido
Análise desacoplada, em outro componenteO roteador do tap é um novo ponto de falha e de latência
  • O envio da cópia deve ser tipo fire-and-forget para não atrasar o fluxo principal.
  • A cópia pode ficar fora de ordem ou atrasada em relação à entrega original.

Diagrama​

O tap entrega a mensagem ao consumidor e uma cópia idêntica ao canal secundário, onde um componente de análise a consome.

Padrões relacionados​

  • Message Store — guarda as informações capturadas pelo tap.
  • Message History — complementa o tap com o caminho percorrido pela mensagem.
  • Detour — versão ativa, capaz de alterar o fluxo.
  • Smart Proxy — permite rastrear serviços cujas respostas vão para um Return Address dinâmico.
  • Control Bus — pode ligar e desligar taps dinamicamente.
  • Publish-Subscribe Channel — dispensa o tap quando o canal já é de difusão.
  • Log Aggregation — consolida os registros gerados pela análise das cópias.

Referência​