DEV Community

Cover image for Kafka, RabbitMQ or NATS
minoblue
minoblue

Posted on

1

Kafka, RabbitMQ or NATS

RabbitMQ — a traditional message queue and is decent for creating traditional topologies such as fanouts with at-least-once delivery.

Kafka — a distributed, replicated log which can be used as a queue, but is perhaps better described as an append-only database. It has a peculiar design because it's basically written bottom-up for performance, and so it has a data model that will seem odd and cumbersome if you don't understand why it was designed this way. For a lightweight alternative to Kafka, you could consider Redpanda, which implements the Kafka protocol and overall design, but is vastly easier to operate.

NATS — a pub/sub message broker. It's not a message queue and will not store messages. For example, if nobody is subscribing to a topic, the messages go nowhere. Think of NATS more like a fast, distributed replacement for sockets that makes it really easy to implement distributed communication patterns such as fan-out and RPC between elastically scalable services.

You can get a message queue with NATS if you use Jetstream, which is what happens when the author of NATS looks at Kafka for inspiration and says he can do it better. But Jetstream is not NATS; it's a separate project that just happens to use NATS as the protocol.

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay