Apache Kafka is open source and can be used for free. It has very good log management and has a way to store the data used for analytics. Apache Kafka is very good if you have a high number of users. This tool has great scalability with high throughput and a very helpful supportive online community.
However, Kafka does not provide control over the message queue, so it is difficult to know whether messages are being delivered, lost, or duplicated. We would like to see more adapters for connecting to different systems made available. I think this would be a better product if the graphical user interface was easier. The manual calculations needed for this solution can be difficult. If the process was automated, it would be a much better product.
IBM MQ has a very strong reputation and is very robust with great stability. This solution is easy to use, simple to configure, and integrates well with our enterprise ecosystem and protocols. IBM ensures message delivery. You can track and trace everything. If a message doesn’t arrive at its destination, it will go back to the queue; this ensures no message is ever lost. This is a huge selling point for us.
IBM MQ does not handle huge volume very well, though. There are some limitations to the queues. If these limitations could be relaxed, it would be a better product for us. You have to license per application and installation, so scaling up can get very costly very quickly.
Conclusion
Apache Kafka is a cost-effective solution for high-volume, multi-source data collection. If you are in a high-growth trajectory and if total message accountability and tracking is not a huge issue for you, this solution may work well for you.
IBM MQ is a licensed product and can be very expensive, it also does not scale easily, which can be very problematic. IBM MQ requires a definite skillset that not many people have, which can be an issue for some and it affects the fast responsive support of this solution.
It is like comparing apples to oranges. Mq is focus on enabling the communication between two different programs in different systems and guaranteeing the delivery of the messages where Kafka has specialized on the generation of events by a source system that are catch by "listener" programs.
MQ is point to point, if the receiving program reads the message from the queue, it dissapears, in the case of Kafka as the event is read by a "listener" program, the event is still there as there could be more then one program that has subscribed to the so called "topic".
So, as mention in another answer, it depends from the use case. If you have for example a front end program that communicated with a very bad bandwith to another program and you have to send critical data, the best solution could be MQ. If you have an "card stolen" application that needs to alert different systems, you could publish the "stolen" event in the front end app and have any number of system listening to this event.
Of course it is also valid the argument that Kafka is open source and IBM MQ is propietary but if you are considering a production environment you can find different vendors (including IBM) that provide products based on Kafka open source.
IBM MQ and Apache Kafka are two leading messaging solutions. Apache Kafka seems to have the upper hand in scalability and features, while IBM MQ is preferred for support and pricing.Features: IBM MQ offers reliable transactional delivery, critical for sectors needing message integrity, financial and retail are notable examples. It provides seamless integration capabilities. Apache Kafka supports high throughput and scalability, perfect for real-time analytics and data streaming. It offers...
Apache Kafka is open source and can be used for free. It has very good log management and has a way to store the data used for analytics. Apache Kafka is very good if you have a high number of users. This tool has great scalability with high throughput and a very helpful supportive online community.
However, Kafka does not provide control over the message queue, so it is difficult to know whether messages are being delivered, lost, or duplicated. We would like to see more adapters for connecting to different systems made available. I think this would be a better product if the graphical user interface was easier. The manual calculations needed for this solution can be difficult. If the process was automated, it would be a much better product.
IBM MQ has a very strong reputation and is very robust with great stability. This solution is easy to use, simple to configure, and integrates well with our enterprise ecosystem and protocols. IBM ensures message delivery. You can track and trace everything. If a message doesn’t arrive at its destination, it will go back to the queue; this ensures no message is ever lost. This is a huge selling point for us.
IBM MQ does not handle huge volume very well, though. There are some limitations to the queues. If these limitations could be relaxed, it would be a better product for us. You have to license per application and installation, so scaling up can get very costly very quickly.
Conclusion
Apache Kafka is a cost-effective solution for high-volume, multi-source data collection. If you are in a high-growth trajectory and if total message accountability and tracking is not a huge issue for you, this solution may work well for you.
IBM MQ is a licensed product and can be very expensive, it also does not scale easily, which can be very problematic. IBM MQ requires a definite skillset that not many people have, which can be an issue for some and it affects the fast responsive support of this solution.
It is like comparing apples to oranges. Mq is focus on enabling the communication between two different programs in different systems and guaranteeing the delivery of the messages where Kafka has specialized on the generation of events by a source system that are catch by "listener" programs.
MQ is point to point, if the receiving program reads the message from the queue, it dissapears, in the case of Kafka as the event is read by a "listener" program, the event is still there as there could be more then one program that has subscribed to the so called "topic".
So, as mention in another answer, it depends from the use case. If you have for example a front end program that communicated with a very bad bandwith to another program and you have to send critical data, the best solution could be MQ. If you have an "card stolen" application that needs to alert different systems, you could publish the "stolen" event in the front end app and have any number of system listening to this event.
Of course it is also valid the argument that Kafka is open source and IBM MQ is propietary but if you are considering a production environment you can find different vendors (including IBM) that provide products based on Kafka open source.
The choice depends on your use case.