NATS and Amazon SQS
You read about Kafka, sketched a topology with partitions and consumer groups and a ZooKeeper-shaped hole in your heart, and then looked at what you actually need: a service that fires an event and another that reacts. That's it. The gap between what Kafka costs to run and what your problem needs is enormous, and you can feel it.
This guide is about the two brokers you reach for when Kafka is overkill. NATS is a tiny, blisteringly fast broker you can run yourself in one binary. SQS is a queue AWS runs for you so you never think about a broker again. Both are boring in the best way, and that's the relief.
How to read this
Read the phases in order the first time. Phase 1 builds the mental model so the words "subject," "queue group," and "visibility timeout" stop being noise. Phase 2 is the everyday work: publishing, consuming, request-reply, and the SQS receive loop you'll actually write. Phase 3 is where things go wrong in production and how to not get paged for it. If you've already used one of the two, you can skim to the half you don't know.
The phases
- Phase 1: Not Everything Needs Kafka - the mental model: what NATS and SQS are, and how to pick a broker.
- Phase 2: Sending and Receiving for Real - pub/sub, request-reply, JetStream, and the SQS poll loop.
- Phase 3: Production Reality - visibility timeouts, dead-letter queues, duplicates, and the failure modes.