What is most valuable?
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.
What needs improvement?
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.
For how long have I used the solution?
I have been using it for a year.
What do I think about the stability of the solution?
Based on my experience with this solution, I would rate the stability a nine out of ten.
What do I think about the scalability of the solution?
I would rate the scalability a nine out of ten.
How are customer service and support?
We haven't had to escalate any issues on our end with RabbitMQ; the features we use have been working well.
Which solution did I use previously and why did I switch?
We're considering moving away from RabbitMQ and towards Anypoint MQ. The reason is that we have a complex scenario where we need to implement a circuit breaker using RabbitMQ, and it's proving difficult.
Anypoint MQ, being a relatively new broker, seems well-optimized within the Anypoint platform itself, making it easier to implement this circuit breaker pattern.
Using RabbitMQ, we'd need to manually gather worker details, stop workers based on their IP addresses, and so on. It gets especially complicated because in a typical production environment we wouldn't expose public ports like HTTP 8082 – we generally use private ports like 8092 over HTTPS for security reasons. Due to this complexity, we're inclined towards Anypoint MQ.
I also worked with ActiveMQ. It's quite similar to RabbitMQ, also open-source. I'm not sure why ActiveMQ isn't as widely used anymore, maybe due to pricing changes. Currently, I mostly hear about RabbitMQ and Kafka being used.
How was the initial setup?
I didn't have much involvement in the setup process.
My access is limited, so I mainly use it for creating queues and other resources for code reusability. I am not utilizing the full range of RabbitMQ's features, just the queueing aspect at this point.
Our access is restricted to the service queue level, where we handle messages coming from the queue into the code.
Which other solutions did I evaluate?
The only thing I have observed is that Anypoint MQ is cost-effective. But more importantly, it is well-optimized with the Anypoint Platform. So, if someone wants to implement multiple scenarios and keep everything inside the platform itself... it's an IPaaS, an Integration Platform as a Service. If they want to keep everything within Anypoint, they can choose Anypoint MQ.
Some companies or clients think, "No, I don't want to use multiple technologies. This will end up complicating things. Let me keep everything on one platform."
In that case, they'll go with Anypoint MQ, even though they don't have complete access to the Anypoint architecture. They can't make changes to the platform or Anypoint MQ unless they understand the complete architecture. Mule doesn't reveal the internal architecture of how things work inside the Anypoint Platform, so it's not possible.
So, the only advantage is the optimization. Mule is optimizing Anypoint MQ internally.
There were also concerns about things like vendor lock-in and a limited community.
Currently, Salesforce has acquired MuleSoft, and they are expanding. So, in the future, Anypoint MQ will definitely be a stronger competitor for RabbitMQ and other queues we currently have. They'll likely provide more features in the future.
What other advice do I have?
I would recommend using it. The only thing is that RabbitMQ can be used with any programming language, and we can use any web portals. H
owever, Anypoint MQ is exclusively for MuleSoft and is not available outside of the MuleSoft platform.
Overall, I would rate the solution a nine out of ten.