Reputation: 83
I'm facing problem in transaction rollback(unable to push the back the message to original queue).
MDB(Container managed TX) deployed in WAS v7 which is listening to remote queue configured in WebSphere MQ v7.
When I'm marking the MessageDrivenContext.setRollbackOnly() i can see the below details in the ffdc WAS logs
com.ibm.websphere.csi.CSITransactionRolledbackException: Transaction marked rollbackonly at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:222) at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:561) at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:4512) at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:107) at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:132) at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:496) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1527)
it looks like transaction is getting rolled back successfully but i'm unable to see the same message in the Queue.(Queue is empty/message is deleted).
Can some one tell how do i retain the message in the Queue and process it again ???
Upvotes: 1
Views: 1433
Reputation: 83
I found out that message which are rolled back are placed in SYSTEM.DEAD.LETTER.QUEUE.
I check the following properties of websphere mq queue manager
1) BOTHRESH(5)
2) BOQNAME(ERROR QUEUE NAME).
even before backout count could reach max BOTHRESH the messaged are placed in default queue instead of configured error queue.
Can some one tell whats wrong in the configuration?
Upvotes: 1