Blog
Para quem já sabe o básico e quer ir fundo. Aqui o assunto é como os modelos funcionam em produção: memória, roteamento, ferramentas, agentes. O lado técnico que pouca gente explica direito.
NATS JetStream (lightweight, sub-ms latency, key-value, object store) vs Kafka (battle-tested, throughput, ecosystem). Performance comparada (Synadia benchmarks 2024), persistência, ordering, consumer model.
RabbitMQ ainda é dominante em micro-serviços. AMQP 0-9-1 model (exchange → binding → queue), tipos (direct, topic, fanout, headers), quorum queues (substitui mirrored), streams (Kafka-like em RMQ 3.9+). Operação em K8s.
SQS standard vs FIFO, visibility timeout, DLQ. SNS topic + subscriber filter policies, fan-out pattern. EventBridge schema registry, archives, replay. Quando usar cada (não é Kafka substituto sempre).
Pulsar (Yahoo, agora StreamNative): tenant/namespace/topic hierarchy, geo-replication built-in, separação compute/storage (BookKeeper). Pulsar Functions (compute embedded), Pulsar IO (connectors). Quando vence Kafka.
Os patterns que fazem produção não pegar fogo. Dead Letter Queue config (retry attempts, redrive), exponential backoff with jitter, idempotency keys (Stripe pattern), strict ordering (key-based partition), poison pill handling.
Change Data Capture profissional: Debezium connectors (Postgres logical decoding, MySQL binlog, MongoDB), schema registry, snapshot strategies (initial, incremental). Outbox pattern para event-driven sem dual-write.
Flink vs Spark Streaming: true streaming (event-by-event) vs micro-batch. Watermarks, event time vs processing time, state backends (RocksDB), exactly-once via 2PC. Casos: Netflix Keystone, Uber AthenaX.
Exactly-once é mentira marketing — ou nem tanto. Two-Phase Commit no Kafka 0.11+, Flink 2PC sinks, idempotent producer + transaction. Os 3 níveis: at-most-once, at-least-once + idempotent, exactly-once efetivo. Custo de cada.