Pular para o conteúdo

apps/messaging-streaming/content-enricher

060 · Comunicação & Mensageria · ≈ 5 min de estudo

Content Enricher

Recebe uma mensagem com dados incompletos e a enriquece consultando uma fonte externa antes de repassá-la adiante. É o padrão inverso do Content Filter: aqui a mensagem ganha campos; no Content Filter, ela perde campos.

passos
6
arquivos
11
testes
2
tecnologias
5
Infraestrutura realTypeScriptBunElysiaRabbitMQDocker
Baixar cartão

Cenário

Um evento cru de PIX chega só com accountId e amountCents — pouco para o antifraude decidir. O worker enriquecedor consulta o cadastro de clientes (serviço HTTP separado, a fonte externa do padrão) e publica o evento completo com nome do titular, status KYC, score de risco, origem e enrichedAt. Conta desconhecida recebe um padrão marcado (enrichedDefault: true); cadastro fora do ar nunca vira cliente inventado.

Planta

Sequência
7/7
POST /pix-events (conta + valor)1publica confirmado; 2022entrega o evento cru3GET /customers/:accountId (timeout)4nome, KYC, score — ou 404 (padrão marcado)5publica o evento enriquecido, depois ack do cru6decide só com o que o evento traz7cadastro fora: 1 retry pela fila de TTL, depois DLQSistema de origemapi_enricher (ingresso)pix-event-rawworker_enricherapi_customer (cadastro/KYC)pix-event-enrichedworker_antifraud
7

7 passos — reproduza para seguir o fluxo

  1. 01

    POST /pix-events valida o evento cru, publica em pix-event-raw com confirmação e mandatory e responde 202

  2. 02

    O worker_enricher consulta GET /customers/:accountId com timeout

  3. 03

    Conta encontradaO evento ganha holderName, kycStatus e riskScore; conta desconhecida (404): padrão unverified, risco 100, marcado

  4. 04

    Cadastro fora ou lentoCópia confirmada na fila de retry (TTL de 1 s) e, na segunda falha, nack para a DLQ

  5. 05

    O evento enriquecido é publicado confirmado antes do ack do cru — nada se perde entre as duas filas

  6. 06

    O worker_antifraud decide só com o evento: KYC unverified ou risco ≥ 80 bloqueia

apps/messaging-streaming/content-enricher

11 arquivos

src/

  • enrichment_pix.tspixEventEnrich (HTTP ao cadastro, padrão marcado, erro visível) e pixFraudDecide
  • topology_pix.tsExchange, filas, fila de retry, DLX/DLQ, schemas e publish confirmado
  • api_enricher.tsIngresso Elysia: POST /pix-events → 202
  • api_customer.tsCadastro de clientes (porta 8113), com PUT /mode para derrubá-lo
  • worker_enricher.tsConsome o cru, enriquece, publica, retry e DLQ; probes e drenagem
  • worker_antifraud.tsConsome o enriquecido e decide
  • config_pix.tsLê e valida a configuração no boot
  • demo.tsdemoSobe os 4 processos, envia eventos de contas conhecidas e desconhecida e derruba o cadastro
  • enrichment_pix.test.tstesteEnriquecimento contra o cadastro real: padrão marcado, falha visível, fronteira do risco
  • worker_enricher.test.tstesteIntegração com RabbitMQ real: enriquecido, retry + DLQ, mensagem inválida, antifraude

./

  • docker.shinfraSobe o RabbitMQ 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

Testes: bun run test.

Requisitos
BunDocker
Sobe junto
RabbitMQ

Por que se relacionam

Teste rápido

Qual é o próximo passo depois de Content Enricher?

Próximo projeto · Comunicação & MensageriaContent Filter
Esc

↑ ↓ navegarEnter abrir191 resultados