We are having RabbitMQ integrated with IBM Sterling B2B Integrator using the JMS interface. We have used the .bindings file along with the Async Receive Adapter in the Sterling SI for integrating the rabbitmq. Following are the jars that are used for integration
commons-io-2.6.jar
fscontext.jar
geronimo-jms_1.1_spec-1.1.1.jar
jndi-1.2.1.jar
amqp-client-4.1.1
rabbitmq-jms-1.7.0.jar
slf4j-api-1.7.5.jar
The integration works well and SI is able to receive the messages posted in the RabbitMQ.
Now our problem is that when there are huge number of messages in the RabbitMQ, the Sterling SI will consume around 1500+ messages and kept in its memory in one shot and they will be shown as un acknowledged messages in the rabbitmq console until all of those are processed by the Sterling. So when the Sterling goes down abruptly, following issues happen
1. Some messages are getting lost (around 7-9 of them)
2. Once the sterling comes up, it gets back lots of messages even before the rabbitmq connection is reestablished. All these messages are having the redelivered flag as true. So in such cases, suppose there is one original message and one redelivered one; both are having the redelivered flag as true.
Due to the above mentioned facts, the Enterprise Intergation team is not confident to go with RabbitMQ and Sterling integrator combination.
When we use the Tibco (which was existing queue), the messages received by the Sterling was one at a time (instead of 1500+ in rabbit case). So even if the SI goes down, the possiblity of messages missing and redelivering is minimal.
Setting of the QoS will not be practical here, I guess, as the adapter is not programmed one. There seems to be no provision to add the QoS in this setup.
So the question is that if there is any rabbitmq client jars that use the receive method instead of message listener? Can they work with rabbit-jms-1.7.0 jar?
Any sugestions or pointers in this regard would be really helpful.
Thanks,
Vinod