Kafka and RabbitMQ are frequently compared as if they're interchangeable. They're not — they solve different problems, and picking the wrong one adds months of avoidable re-architecture.
RabbitMQ is a message broker: producers send messages, the broker routes them to queues, consumers pull from queues and acknowledge delivery. Messages are deleted after acknowledgment. It's designed for task distribution — job queues, work distribution, RPC patterns, request-reply. Throughput is 10K-50K messages/second per node. Latency is 1-10ms. Plugins support complex routing (topic exchanges, headers, fanout). RabbitMQ is easy to operate and has excellent tooling for message-level observability.
Kafka is a distributed log: producers append events to topics (ordered logs), consumers read from an offset and process events at their own pace. Events are retained by time or size policy, not acknowledgment — a consumer can replay from the beginning of a topic or from any offset. Throughput is 1-2 million messages/second per broker (with proper configuration). Latency is 2-15ms for small messages. Kafka is designed for event streaming — audit trails, change data capture, real-time analytics, event sourcing, and systems where you need multiple independent consumers reading the same event stream.
The key structural difference: in RabbitMQ, a message is consumed once and gone. In Kafka, an event can be read by many consumer groups independently. If you need an audit log of every order placed, Kafka. If you need to dispatch one job to one worker, RabbitMQ.
Operational complexity: RabbitMQ is simpler to operate. Kafka historically required ZooKeeper management, but KRaft mode (stable since Kafka 3.3) eliminates that dependency. Confluent Cloud and MSK (AWS) remove operational overhead for managed Kafka. A self-hosted Kafka cluster for production needs at minimum 3 brokers with replication factor 3 — plan for 3 VMs minimum.
Redpanda is worth mentioning as a Kafka-compatible alternative: 10x lower latency (p99 <1ms), single binary deployment, no JVM, and up to 6x higher throughput per node. If you've decided you need Kafka semantics and are starting fresh, Redpanda is worth evaluating seriously.
The short version: RabbitMQ for task queues and work distribution; Kafka for event streams, audit logs, and multi-consumer architectures.