RabbitMQ and Kafka are two of the most widely used tools for moving data between services. RabbitMQ is a message broker built for reliable delivery and flexible routing. Kafka is a streaming platform designed for high throughput and scalable event processing.
This post breaks down their main differences, architecture, performance, and use cases—to help you pick the right one.
| Feature | RabbitMQ | Kafka |
|---|---|---|
| Delivery model | Push (broker-driven) | Pull (consumer-driven) |
| Routing | Flexible (exchanges, bindings, routing keys) | Simple topic-partition-based |
| Message removal | After acknowledgment | After retention period |
| Replay capability | Limited (ack-based) | Full replay (log-based) |
| Message ordering | Per-queue | Per-partition |
| Prioritization | Supported | Not supported |
| Protocol flexibility | High (multi-protocol) | Low (proprietary) |
| Category | RabbitMQ | Kafka |
|---|---|---|
| Architecture | Message broker (queues, exchanges) | Distributed event log |
| Consumer model | Push | Pull |
| Broker type | Smart | Dumb |
| Scalability | Moderate | Very high |
| Throughput | Low–medium | Very high |
| Message persistence | Until acknowledged | Retained (configurable) |
| Replay support | Limited | Full |
| Protocols | AMQP, MQTT, STOMP, etc. | Proprietary (TCP) |
| Routing flexibility | High | Simple (topic-based) |
| Use case | Task queues, workflows, complex routing | Streaming, analytics, data pipelines |
Choose RabbitMQ when:
Choose Kafka when:
RabbitMQ tutorialRabbitMQ: maximum size of a messageThe maximum size of a message in RabbitMQ is not defined by the protocol, but by the implementation. Unfortunately, this value is not well documented and has changed a lot over time
RabbitMQ tutorialProperly setting up dead-letter queues in RabbitMQLearn how to set up dead-letter queues in RabbitMQ, including creating a dead-letter exchange, binding it to a queue, and managing rejected messages via policies
RabbitMQ tutorialRabbitMQ default login and passwordA quick guide on how to connect to RabbitMQ with the default credentials and how to use RabbitGUI to manage your RabbitMQ instances.Debug, monitor, and manage RabbitMQ with a modern developer interface.
Try now
ProductA better RabbitMQ UIA geat experience is made out of many small details, have a look at all the features we packed into RabbitGUI to make your life easier
Cheat sheetRabbitMQ C# Cheat-SheetEverything you need to know to get started with RabbitMQ in C# and Docker with code examples ready to go.
ProductHow to manually publish messages to RabbitMQSometimes you just need to test something quickly, you want to trigger a specific job, or you want to retry a task that failed