RabbitMQ is an open source message broker that uses a messaging queue approach. Queues are spread across a cluster of nodes and optionally replicated, with each message only being delivered to a single consumer.
Characteristics Apache Kafka RabbitMQ Architecture Kafka uses a partitioned log model, which combines messaging queue and publish subscribe approaches. RabbitMQ uses a messaging queue. Scalability Kafka provides scalability by allowing partitions to be distributed across different servers. Increase the number of consumers to the queue to scale out processing across those competing consumers. Message retention Policy based, for example messages may be stored for one day. The user can configure this retention window. Acknowledgement based, meaning messages are deleted as they are consumed. Multiple consumers Multiple consumers can subscribe to the same topic, because Kafka allows the same message to be replayed for a given window of time. Multiple consumers cannot all receive the same message, because messages are removed as they are consumed. Replication Topics are automatically replicated, but the user can manually configure topics to not be replicated. Messages are not automatically replicated, but the user can manually configure them to be replicated. Message ordering Each consumer receives information in order because of the partitioned log architecture. Messages are delivered to consumers in the order of their arrival to the queue. If there are competing consumers, each consumer will process a subset of that message. Protocols Kafka uses a binary protocol over TCP. Advanced messaging queue protocol (AMQP) with support via plugins: MQTT, STOMP.
Read more about the difference between Kafka and RabbitMQ»