Pular para o conteúdo

apps/messaging-streaming/wire-tap

066 · Comunicação & Mensageria · ≈ 6 min de estudo

Wire Tap

Espelha uma cópia de cada mensagem para um canal secundário de observação, sem alterar, atrasar ou acoplar o fluxo principal. Diferente de um log de auditoria em banco, o tap atua na própria camada de mensageria: o produtor publica uma única vez e o broker se encarrega de duplicar a mensagem para quem estiver observando.

passos
6
arquivos
9
teste
1
tecnologias
5
Infraestrutura realTypeScriptBunElysiaRabbitMQDocker
Baixar cartão

Cenário

Um banco digital monitora todo PIX em tempo real para prevenção à lavagem de dinheiro (AML), sem que o monitoramento afete a liquidação, que é o fluxo crítico. A API publica cada transferência uma vez; o próprio broker entrega uma cópia à liquidação e outra ao tap de compliance. A API não sabe que o tap existe, e o tap lento, parado ou com erro não atrasa nenhum PIX.

Planta

Fluxo
6/6
API de PIXpix.eventsfanoutpix-settlementpix-compliance-tapx-max-length, drop-headLiquidaçãofluxo de negócioTap de complianceAML, descartávelpix-settlement-dlq1 publish confirmadocópiacópianack sem requeue
6

6 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Copia o tráfego sem interferir.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    POST /pix/transfers valida e publica o evento uma única vez na exchange fanout pix.events, com confirmação do broker

  2. 02

    O broker copia para as duas filas ligadas: pix-settlement e pix-compliance-tap — cada consumidor na sua fila, nunca competindo numa só

  3. 03

    A API responde 202 sem esperar consumidor nenhum

  4. 04

    A liquidação consome a própria fila; falha dela vai para a DLQ

  5. 05

    O tap consome sua cópia e sinaliza PIX acima de R$ 50.000,00; erro no tap é registrado e a cópia descartada

  6. 06

    O tap é best-effortCom ele parado, a fila guarda só as PIX_TAP_MAX_LENGTH cópias mais novas (drop-head) — o broker não cresce sem fim e a liquidação não perde nada

apps/messaging-streaming/wire-tap

9 arquivos

src/

  • topology_pix.tsExchange fanout, fila de liquidação com DLX, fila do tap limitada e publicação confirmada
  • api_pix.tsAPI Elysia que publica cada transferência uma vez
  • worker_settlement.tsLiquidação, o fluxo de negócio
  • worker_tap.tsTap de compliance descartável, com triagem AML
  • aml_pix.tsRegra de triagem AML
  • config_pix.tsVariáveis de ambiente validadas no boot
  • topology_pix.test.tstesteIntegração com RabbitMQ real: cópia para cada fila, tap falhando sem afetar a liquidação, limite do tap e limiar AML
  • demo.tsdemoAPI, liquidação e tap como processos; o tap é parado no meio

./

  • docker.shinfraSobe o RabbitMQ 3 na porta 5672

Executar · com Docker

  1. ./docker.sh up# sobe RabbitMQ
  2. cp .env.example .env# variáveis de ambiente
  3. bun install# dependências
  4. bun run demo# roda o cenário
  5. bun run test# integração contra o serviço real
Requisitos
BunDocker
Sobe junto
RabbitMQ

Por que se relacionam

Wire Tap × Audit Trail

Aspecto Wire Tap Audit Trail
Camada Mensageria, em tempo real Persistência com hash encadeado
Garantia no canal secundário Best-effort Forte
Falha no canal secundário Zero impacto no fluxo Pode bloquear a operação
Uso Monitoramento e AML Prova regulatória

Teste rápido

Qual destes combina com Wire Tap?

Próximo projeto · Comunicação & MensageriaResequencer
Esc

↑ ↓ navegarEnter abrir191 resultados