Pular para o conteúdo

apps/messaging-streaming/message-routing

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

Message Routing

O produtor diz o que aconteceu e com quais atributos; o broker decide para quais filas vai cada cópia. Roteamento por padrão de routing key (topic), por atributos da mensagem (headers) e uma rede de segurança para o que nenhuma regra casa (alternate exchange).

passos
6
arquivos
5
teste
1
tecnologias
4
Infraestrutura realTypeScriptBunRabbitMQDocker
Baixar cartão

Cenário

Um banco digital publica cada operação — PIX, TED, alerta de fraude — sem saber quem consome. Cada trilho tem sua fila, a auditoria recebe todo pagamento e alerta, e a revisão de compliance recebe o que é arriscado pelos atributos, qualquer que seja o trilho. Operação de um tipo que ninguém assina não some: cai numa fila de não roteados para alguém olhar.

Planta

Fluxo
9/9
Produtorbank.operationstopicbank.operations.attributesheaders x-match anybank.operations.unroutedalternate exchangeoperation-pixoperation-tedoperation-fraud-alertoperation-auditoperation-compliance-reviewoperation-unroutedpayment.pix.*payment.ted.*alert.fraud.#payment.# e alert.#payment.#amountTier=high oucrossBorder=truenenhum binding casou
9

9 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Roteia pelo conteúdo ou cabeçalho.

Esconde cada passo: lembre antes de tocar para revelar.

Vocabulário compartilhado

domínio.subtipo.estado+1
payment.pix.*+1
  1. 01

    O produtor publica na exchange topic com routing key domínio.subtipo.estado e headers amountTier e crossBorder

  2. 02

    * casa exatamente uma palavra (payment.pix.*), # casa zero ou mais (alert.fraud.#); a mensagem vai a todos os bindings que casam

  3. 03

    Um binding exchange-para-exchange repassa todo pagamento à exchange headers, que roteia por atributo e ignora a chave

  4. 04

    x-match: any: valor acima de R$ 50.000,00 ou pagamento internacional basta para ir à revisão de compliance

  5. 05

    A exchange topic tem alternate-exchange: chave que nenhum binding casa vai para operation-unrouted, não é descartada

  6. 06

    Toda fila de produção tem DLX para operation-dlq

apps/messaging-streaming/message-routing

5 arquivos

src/

  • topology_operation.tsExchanges topic, headers, alternate e DLX; filas, bindings e publicação confirmada com headers
  • config_operation.tsVariáveis de ambiente validadas no boot
  • topology_operation.test.tstesteIntegração com RabbitMQ real: fan-out por padrão, limites de * e #, headers no limite do valor e alternate exchange
  • demo.tsdemoPublica cinco operações e mostra em quais filas cada cópia caiu

./

  • 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

Exchanges usadas

Exchange Roteia por Papel aqui
Topic padrão de routing key trilho, fraude e auditoria
Headers atributos da mensagem revisão de compliance por risco
Fanout (alternate) nada — recebe o que sobrou operação sem rota
Fanout (DLX) nada mensagem rejeitada ou expirada

Teste rápido

Qual é o próximo passo depois de Message Routing?

Próximo projeto · Comunicação & MensageriaMessage Broker
Esc

↑ ↓ navegarEnter abrir191 resultados