Publish/subscribe is a distributed interaction paradigm well adapted to the
deployment of scalable and loosely coupled systems.
Apache Kafka and RabbitMQ are two popular open-source and
commercially-supported pub/sub systems that have been around for almost a
decade and have seen wide adoption. Given the popularity of these two systems
and the fact that both are branded as pub/sub systems, two frequently asked
questions in the relevant online forums are: how do they compare against each
other and which one to use?
In this paper, we frame the arguments in a holistic approach by establishing
a common comparison framework based on the core functionalities of pub/sub
systems. Using this framework, we then venture into a qualitative and
quantitative (i.e. empirical) comparison of the common features of the two
systems. Additionally, we also highlight the distinct features that each of
these systems has. After enumerating a set of use cases that are best suited
for RabbitMQ or Kafka, we try to guide the reader through a determination table
to choose the best architecture given his/her particular set of requirements.Comment: 25 single-column pages, 7 figures, 5 table