I have the below requirement
We have a proxy service which will be listening on JMS Queue and Invoke a Business Service which invokes an external webservice with retry count/retry intervaal.
JMS Queue-. PS -> BS -> WS
So in case if there is any error from BS the message needs to go back to the queue. So i enabled transaction on proxy service (Use XA, Transaction Enabled for both request and response)
and QOS Exactly Once on the Routing options of BS.
Every thing is happening fine. Message is going back to the queue when there is an error but the BS call is not getting retried.(As per the Retry interval and Retry count on BS Settings)
So in the same routing options i specified retry interval and retry count.
But still its just invoking once and raising error and sending the message back to the queue.
Am i missing some thing. Any suggestions?
Instead of setting the retry count and interval on Business service in this case it is recommended to set the retry settings on the delivery failure tab of the queue.
Set Redelivery Delay Override and Redelivey limit.
Thanks for the response.
But my requirement is not to loose the message and preserve the incoming message order and send in the same order. So if I use
the JMS retry count and interval after trying for the specified number of times the message is either lost or routed to error destination
Even if I dequeue the message from Error destination and enqueue to the JMS listening Queue the ordering will be lost.
So as per the requirement I thought having retry mechanism at business service level is good. Please suggest if there is any other way for retry mechanism preserving message ordering (FIFO as per enqueue time stamp)
Messages will be coming on to JMS Quueu. OSB Proxy service needs to pick up the message send over to BS (external).
1. In case if the external system is down or sends an error response retry n times and if it fails at the end roll back the message onto the Queue
2. Message ordering should be preserved on the queue. We need to send the messages in the same order as recieved.