I have three queues setup. A Base queue, Backout queue and a Hold queue.
A test application reads from Base queue and rollback() the session. After attempting to deliver the message two times, the JMS application sends the message to Backout queue after the third rollback().
My application (MsgRequeueApp) reads the message from Backout queue and waits for some time, adds some headers for its own use, sends the message again to Base Queue. The test application reads the re-queued message and rollback() three times. At the end of the third rollback(), the message is lost. I was expecting the message to go back to Backout Queue.
1. MsgRequeueApp does not log any new messages. So, it is not reading any new message.
2. I am monitoring the queues from weblogic's Admin console. The message is not present in Base Queue / Backout queue / Hold queue.
Note: There is a different logic that would send messages to Hold queue. But I am not testing that right now.
Here is the log after I enabled logging (Headers, Body)
Do you have a redelivery limit set on the producer or the destination? If you do, a message may be discarded once the limit is reached depends on your delivery-failure-params on the destination. You can configure to have the messages put into an error destination once they reach their redelivery limit.