Apache Kafka | RabbitMQ | |
---|---|---|
Creation year | 2011 | 2007 |
License | Apache (Open source) | Mozilla Public License (Open source) |
Programming language | Scala | Erlang |
AMQP compliant | No | Yes |
Officially supported clients in | JAVA | JAVA, .NET/C#, Erlang |
Table 1 – General information comparison between Apache Kafka and RabbitMQ
Broker capabilities | Apache Kafka | RabbitMQ |
---|---|---|
Main storage space | Dist | RAM |
Ordered storage and delivery | Yes by partition level | No |
Queue content persistence | Yes | No |
Message deletion | Manually | Immediately |
Queue data compression | Yes | No |
Predefined queues on broker | Yes | Yes |
Multiple different consumers of same data set | Yes | No |
Load balancing | Yes | Yes |
Remote queue definition | No | Yes |
Advanced/ conditional message routing | No | Yes |
Permission and access | No | Yes |
SSL support | No | Yes |
Clustering support | Yes | Yes |
Self-sufficient | No | Yes |
Management and monitoring interface | No | Yes |
Table 2 – Broker capabilities comparison between Apache Kafka and RabbitMQ
Java producer capabilities | Apache Kafka | RabbitMQ |
---|---|---|
Batch delivery | yes | no |
Asynchronous publishing | yes | no |
Publisher confirms (acknowledgements) |
yes | yes |
Table 3 – Producer (official Java client only) capabilities comparison between Apache Kafka and RabbitMQ
Java consumer capabilities | Apache Kafka | RabbitMQ |
---|---|---|
Batch fetch/delivery | No | No |
Push delivery from broker | No | Yes |
Pull delivery (fetch) | Yes | Yes |
Prefetch count | Implicit | Yes |
Message replay capability | Yes | No |
Consumer confirms(acknowledgements) | Implicit | Yes |
Message rejection | No | Yes |
**Table 4 – Consumer (official Java client only) capabilities comparison between Apache Kafka and RabbitMQ