Projeto

RMQ Simulator — RabbitMQ visual no browser

Simulador visual e educacional do RabbitMQ: monte producers, exchanges, filas e consumers arrastando no canvas e assista às mensagens sendo roteadas em tempo real — direct, fanout, topic e headers, com ack e prefetch. 100% no browser.

Criador e desenvolvedor

Ficha Técnica

Papel

Criador e desenvolvedor

Stack

reacttypescriptrabbitmqzustandeducationalopen source

Explicar RabbitMQ com slide é sofrimento: exchange, binding, routing key, prefetch — tudo abstrato até você ver a mensagem viajando. O RMQ Simulator resolve isso: um canvas onde você arrasta producers, exchanges, filas e consumers, liga tudo com bindings e assiste às bolinhas de mensagem sendo roteadas em tempo real, seguindo a semântica real do AMQP. Sem servidor, sem Docker, sem conta — abre no browser e funciona.

O que ele simula de verdade

  • Os 4 tipos de exchange com roteamento fiel:
    • fanout — cópia para todas as filas ligadas;
    • direct — match exato de routing key;
    • topic — pattern matching com * (uma palavra) e # (zero ou mais);
    • headers — matching por headers da mensagem.
  • Mensagem sem rota fica marcada como unroutable — igual na vida real.
  • Semântica de ack: auto-ack vs. ack manual com mensagens in-flight, respeitando o prefetchCount do consumer — dá pra ver o backpressure acontecendo quando o consumer satura.
  • 5 exemplos prontos espelhando os tutoriais oficiais do RabbitMQ: Simple Queue, Work Queues, Pub/Sub, Routing e Topics.

Além disso: undo/redo, duplicação de nós, export/import do diagrama em JSON, atalhos de teclado, pan/zoom com marquee selection, i18n (en/pt/es) e uma página /learn com o conteúdo teórico.

Arquitetura

Zero backend. A "engine" de mensageria roda inteira no browser: um store Zustand guarda o grafo e as mensagens, um loop de requestAnimationFrame avança as mensagens viajantes, e o roteamento acontece quando cada mensagem "chega" na exchange.

Visão de componentes:

Fluxo de uma mensagem:

Decisões técnicas que valem a pena contar

Topic matching de verdade. O algoritmo de matching do AMQP (* = exatamente uma palavra, # = zero ou mais) foi implementado com um parser de dois ponteiros sobre os segmentos da routing key — dá pra testar no simulador exatamente os patterns que você usaria em produção, tipo *.order.* ou us.#.

Coordenadas de mundo vs. tela. Pan, zoom e seleção por marquee exigem converter coordenadas de tela para "mundo" ((screen − offset) / scale) e interseção AABB dos nós. O zoom com Ctrl+scroll recalcula o offset para manter o ponto sob o cursor fixo — e usa listener nativo { passive: false } para poder bloquear o zoom do próprio browser.

Prefetch visível. O consumer para de receber quando o número de mensagens não confirmadas atinge o prefetchCount. É a demonstração mais didática de backpressure que já consegui fazer: a fila enche na tela.

Bônus: o experimento com LLMs

Este repo tem dois irmãos: claude-rmq-simulator e qwen-rmq-simulator — a mesma spec entregue a modelos de IA diferentes, para comparar as escolhas de arquitetura e stack que cada um faz (spoiler: ambos escolheram Next.js; a versão principal usa Vite). Um mini-benchmark prático de código gerado por IA.

Stack

React 19 · TypeScript · Vite 7 · Zustand · Tailwind CSS 4 · i18next · MIT license.

Status

No ar em rmq.racoelho.com.br, open source sob MIT. No roadmap: dead-letter exchange, enforcement de TTL/max-length nas filas e URLs compartilháveis de diagrama.

Curtiu o projeto?

Se quiser conversar sobre esse projeto, arquitetura ou uma oportunidade de trabalho, é só me chamar. 🚀

contato@racoelho.com.br
Racoelho

Conteúdo sobre desenvolvimento, tecnologia e desafios de programação para impulsionar sua carreira em tech.

Conecte-se

© 2024- 2026 Racoelho. Todos os direitos reservados.

v3.0.19 • Build: 2026-04-17