comparison between Apache Kafka and RabbitMQ

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

Leave a Reply

Your email address will not be published. Required fields are marked *