NATS

RabbitMQ is not dying, but NATS keeps appearing at the crime scene

For years, if two pieces of enterprise software needed to securely pass a note to each other without losing it in the hallway, they used RabbitMQ. It was the unquestioned postal service of the backend infrastructure. You set it up, you fed it a steady diet of messages, and it delivered them with the stolid reliability of a 1950s government mail carrier.

There is always something inherently funny about serious engineers trusting their most critical financial transaction data to a piece of infrastructure named after a fluffy woodland creature, but the tech industry has never been one to shy away from absurd naming conventions.

RabbitMQ is mature, it is widely understood, and it solves the traditional message broker problem beautifully. The problem we are facing right now is not that RabbitMQ has somehow forgotten how to deliver the mail or died of old age. It has not been evicted due to incompetence. The issue is simply that the building it was designed to service has fundamentally changed its zoning laws.

Then someone changed the locks on the building

To understand what happened, we have to look at the architectural carnage of the last decade. We spent years systematically smashing massive monolithic applications into hundreds of tiny, independent microservices with a hammer. We are now acting mildly surprised that all those scattered pieces desperately need to talk to each other all the time.

The sheer volume of producers and consumers has multiplied in ways that a traditional, centralized broker finds exhausting to manage. Kubernetes normalized environments where pods pop in and out of existence like subatomic particles. Multi-region deployments became the standard rather than a luxury.

We no longer just want a highly reliable queue sitting safely between two predictable applications in a heavily air-conditioned server room. We want distributed systems talking across unpredictable networks. We are looking for something different. The industry is quietly moving away from heavy message brokers toward communication fabrics.

Why NATS suddenly fits the picture

If RabbitMQ is a heavy steel filing cabinet, NATS is a hyperactive but incredibly efficient bicycle courier. NATS started out with a very lightweight model based on subjects and publish-subscribe mechanics. It allowed for asynchronous communication and request-reply patterns with almost zero ceremonial overhead.

Initially, traditional enterprise architects looked at NATS, noticed it did not store messages permanently, and patted it on the head before going back to their heavy brokers. NATS was very fast, but it lacked a sense of object permanence.

Then came JetStream. JetStream bolted persistence, durable consumers, and message replay capabilities onto NATS. Suddenly, this lightweight tool could do the heavy lifting that previously required a dedicated traditional broker.

This is the exact point where NATS started showing up at the crime scene of modern architecture. Its operational simplicity and ridiculously small footprint fit perfectly into the Kubernetes ecosystem. NATS is not gaining all this attention simply because it is fast. It is gaining traction because its fundamental model looks exactly like the systems we are currently trying to build.

Artificial intelligence and the edge make things awkward

Things get genuinely weird when we step outside the traditional data center.

Edge computing requires communicating across distributed locations that are occasionally completely disconnected from the internet. The Internet of Things multiplies your endpoints into the millions, introducing a swarm of ephemeral connections. A smart tractor in a field in Iowa needs to send telemetry data to a regional server, and it does not care if your centralized message queue is currently feeling overwhelmed.

Modern artificial intelligence platforms make the situation even more chaotic. Agentic systems require constant events, transient workers, endless request-reply loops, and real-time coordination between wildly different components.

Heavy brokers start to sweat under these conditions. They were built for predictable plumbing, not for a chaotic web of intelligent agents and intermittent edge devices. NATS, however, was designed with lightweight, distributed topologies in mind from the very beginning. You can run a NATS server on a Raspberry Pi strapped to a weather balloon, or you can run it as a massive global supercluster. It does not really care. This architectural flexibility is exactly why modern workloads naturally gravitate toward it.

Architecture is not a high school popularity contest

Before the messaging purists start writing angry emails, we need to clarify something important. RabbitMQ is not the loser in this story.

RabbitMQ continues to evolve at a very healthy pace. The introduction of quorum queues and streams has modernized the platform considerably, bringing it up to speed with contemporary distributed consensus algorithms. It remains a genuinely excellent choice for many enterprise messaging workloads and traditional task queues.

If you have a RabbitMQ platform that is running smoothly and handling your current workload without complaints, migrating away from it just because NATS is currently trending on hacker forums would be a terrible technical decision.

We often treat software tools like sports teams, desperate to declare a definitive winner. But architecture is not a popularity contest. The relevant question is never which of the two products is objectively better. The only question that matters is which tool happens to fit the shape of your current problem.

The slightly uncomfortable question at the end

The reality of modern infrastructure forces us to be honest about our defaults.

If you were sitting down to design your messaging architecture today, with Kubernetes clusters, multiple geographic regions, edge workloads, and autonomous AI agents already sitting on your requirements list, would you still start with the exact same broker you blindly chose ten years ago?

RabbitMQ is not dying. NATS is not universally replacing it. What is fundamentally shifting is what we expect our messaging infrastructure to actually do for a living. NATS is proving particularly interesting right now because it arrived at the exact right moment with a model perfectly tailored to this architectural shift.

Technologies rarely disappear because they stop working. More often, the problem simply packs its bags and quietly moves somewhere else.