3 Comments
User's avatar
Gooseus's avatar

What about NATS/Jetstream?

Yeetum's avatar

Double this. Would love to add and see in analysis also zeroMQ or Zig variants. I find nats jet stream my preferred since I can embed into golang services

Diamantino Almeida's avatar

Good breakdown of the mental models. From production experience, I'd add a word of caution on RabbitMQ specifically: it tends to hold up beautifully in early stages, which builds a false sense of confidence. The breakdowns usually come later queue depth spikes under backpressure, memory alarms triggering flow control at the worst possible moment, or consumers falling behind in ways that are hard to recover from gracefully.

The diagram captures the architectural differences well, but the real pain isn't in understanding the models it's in the moment your team realizes the tool they chose six months ago wasn't built for the load they're seeing today. RabbitMQ's "messages are gone after ack" model is a feature, until it isn't and you need to replay.

The choice between these three is rarely about features on paper. It's about which failure modes your team is prepared to handle at 2am.