Message Queueing and Event Streaming Providers in Comparison
Apache Kafka, Apache Pulsar, AWS Kinesis, Amazon SQS, RabbitMQ, IBM MQ, RocketMQ, Azure QS
Event Streaming Platforms (ESP) and Message Queues (MQ) are pretty popular solutions in nowadays IT world. Event Streaming cops with getting real-time data from different sources as a stream of event and delivers this continuous flow of data to different destinations for further refinement. MQ is a form of asynchronous service-to-service communication used in serverless and microservices architectures. Messages are stored on the queue until they are processed and deleted. Each message is processed only once, by a single consumer.
Event Streaming is used widely, for example, in industries like:
- continuous capturing of data from different IoT sensors/devices
- handling with customer data in e-commerce, hotel and travel industry
- processing financial transactions in bank, insurance companies
ESP versus MQ…
Functionalities of Event Streaming Platforms and Message Queues are somehow interchangeable. They both provide decoupled message like communication over network, message production/consumption is asynchronous, the server/client model is highly decoupled. Historically, ESPs are introduced as a predecessor or competitor to MQs while eliminating shortages of Messaging Middlewares like:
- repeated consumption of data
- ordered consumption of data
- long time data retention
So let us have a quick overview of current ESP and MQ providers in market and analyse their pros and cons:
Apache Kafka: distributed event store and stream-processing platform.

+ Open source + Low latency + High throughput + Real-time processing + Scalable + Well documented - Lots of Detail Functionalities should be built on top - difficult to understand code base (mix of Java/Scala)
Apache Pulsar: an all-in-one messaging and streaming platform

+ Open source +Easily deployable + Written compoletely on java + Easy to scale up/down + Geo-replication - Less mature (than Kafka) - Less documented/smaller community (than Kafka)
Amazon Kinesis: performant streaming platform

+ Well integrated into AWS Ecosystem + Scalable + Totally serverless platform + Simple management - Documentation is confusing. - Difficult VPC integration - Dependent on redis - Uses Lots of storage
Rabbit MQ: is an open-source message-broker software

+ Delivery and order guarantee + Redundancy (persisting until they are processed completely) + Decoupling + Scalability - Slow at processing large datasets - Quite tricky at maintaining - It has premium integration services - Limited range of brokers as it is a single broker based - Poor documentation
IBM MQ: is a family of message-oriented middleware products

+ Security + Ease of use - Problems with message prioritization - Difficult to integrate - Costly
Amazon SQS: is a distributed message queuing service

+ Reliably deliver messages + Fault tolerance + Reduce Administrative Expenses + Ensure the safety of sensitive information + Scale elastically and efficiently - Less performance control - Scale-up cost high - Costs are high at scale - Absence of support for broadcasting
RocketMQ: is a distributed messaging and streaming platform

+ High performance + Supporting both point-to-point and publish-subscribe + Low latency - No message tracking - Smaller community
Azure Queue Storage: a service for storing large numbers of messages

+ Not expensive + Secure + Well integrated to Azure Ecosystem + Well documented - Messages cant be ordered - No Subscribtion mechanism - Size Limitation of messages (64KB)
If you are interested in more Software Architecture topics take a look at below list.
Relevant Articles:




