With RabbitMQ, I appreciate that it's an open-source platform.
RabbitMQ provides access to SDKs for development and the ability to raise and log tickets if we encounter issues. We can integrate RabbitMQ using various languages like Java or Python using the provided SDKs.
By comparison, Anypoint MQ it is a bit difficult. It's not open-source, so we have less flexibility. It's tightly coupled inside the Anypoint platform. This gives an advantage to clients already heavily dependent on the Anypoint platform, as they can easily adopt Anypoint MQ.
Aside from that, Anypoint MQ is generally well-optimized inside Anypoint. Other aspects like reliability are standard across queueing systems.
I haven't encountered any issues with the features I've used within the queueing functionality. Since queues provide message reliability, that's our primary concern.
RabbitMQ integrates easily. It's open-source and provides the required SDKs for development.
Overall, the aspects I've used – queues and monitoring – have been up to the mark.
Implementing a circuit breaker scenario using RabbitMQ is complicated. This complexity arises because manual intervention is required to manage worker details and handle operations based on worker IP addresses.
The use of public and private ports, specifically HTTP 8082 and HTTPS 8092, introduces complexity.
So, we had thought about moving away from RabbitMQ to Anypoint MQ because there is a complex scenario where we need to implement a circuit breaker.
Using RabbitMQ is getting complicated, so we need to implement it manually. Anypoint MQ is well-optimized within the Anypoint platform itself. Anypoint MQ is a Mule-related broker, so it's very well optimized for the Anypoint platform itself. So, it will be easy if we are using Anypoint MQ; we can implement this circuit breaker scenario in a very easy way.
But because using RabbitMQ, it is a bit complex, because we need to get the details of the worker and we need to catch, we are stopping the worker based on how many workers we are having by getting their IP addresses, and this stuff is getting pretty much complicated. Then, all this stuff will work when you are on HTTP's public port 8082. But in general, we won't use public ports. HTTP 8082. We generally use 8092, which is a private port over HTTPS configuration.
This will help us in several ways: the security purposes of the organization and everything else. So, that's why it's getting a bit complicated to implement this scenario while using RabbitMQ. So we got to move to Anypoint MQ.