When it comes to message broker solutions, those can be categorized into 2 main types
- Standards based traditional message brokers (e.g. Apache ActiveMQ, RabbitMQ, WSO2 MB, Apache Qpid)
- Proprietary modern message brokers (e.g. Apache Kafka, Kestrel)
Based on your requirement, you need to select the best category and then go for a specific vendor based on your needs, IT capacity and financial capabilities. In this post, I’m comparing 2 popular message brokers (WSO2 MB and Apache Kafka) from 2 categories. Even though it discusses about 2 specific brokers, you can consider this when comparing these 2 categories of message brokers.
|
|
|
Feature | WSO2 MB | Apache Kafka |
Messaging semantics | Rich messaging semantics with features such as - Transactions - Persistent/In-memory | Relaxed and proprietary |
Supported protocols | JMS 1.0/1.1, AMQP, STOMP, MQTT | Propreitary protocol written over TCP |
Standard messaging | supports well known standards based messaging - pub/sub - request/reply - point to point | Supports only pub/sub with proprietary protocol |
Clustering | In built clustering without any third party components | Requires Zoo Keeper to make a cluster |
Performance | Considerably low due to the standards based messaging semantics and different protocol support | Higher performance due to simpler messaging semantic and proprietary protocol |
Deployment complexity | Simpler deployment with 2 node cluster which is capable of handling a considerable load | Complex deployment with multiple components deployed in a cluster. Not suitable for moderate messaging requirements |
Message flow control | Supported at the MB itself through - dead letter channels - QoS - delivery guarantees | Needs to be done at the client side |
Management console | Available with full management capabilities of Queues/Topics and other server runtime monitoring | No native management console |
Client support | Java, .Net, C++ and other AMQP clients | Clients for Java, C++, Python, Go and others |
Compatibility | compatible with existing messaging systems within the enterprise due to standards based communication | Need special connectors to be written for existing systems to connect with Kafka |
Security | Security can be configured through - SSL at transport layer - User based access control for queues - Role based access control for topics | no SSL support |
|
|
|
|
|
|
Based on the above comparison, if you are looking for a high performance, large scale message storage platform which works in isolation without much connectivity to existing systems, you can select Apache Kafka. But your requirements is to build a messaging system which interconnects with existing systems seamlessly and with a moderate performance and easily manageable deployment with rich messaging features, you can select WSO2 MB.
Cheers !!!
It was really a nice post and i was really impressed by reading this
ReplyDeleteBig Data Hadoop Online Training Hyderabad