我在事务回滚中遇到问题(无法将消息推回到原始队列)。
在WAS v7中部署的MDB(容器管理的TX),它正在侦听在WebSphere MQ v7中配置的远程队列。
当我标记MessageDrivenContext.setRollbackOnly()时,我可以在ffdc WAS日志中看到以下详细信息
com.ibm.websphere.csi.CSITransactionRolledbackException:事务标记为rollbackonly 在com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:222) at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:561) 在com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:4512) 在com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:107) 在com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:132) 在com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:496) 在com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1527)
看起来事务成功回滚但我无法在队列中看到相同的消息。(队列为空/消息被删除)。
有人可以告诉我如何在队列中保留消息并再次处理它吗?
答案 0 :(得分:1)
我发现回滚的邮件放在SYSTEM.DEAD.LETTER.QUEUE中。
我检查了websphere mq队列管理器的以下属性
1)BOTHRESH(5)
2)BOQNAME(ERROR QUEUE NAME)。
即使在回退计数达到最大值BOTHRESH之前,消息也会被置于默认队列中而不是配置错误队列。
有人能说出配置错误吗?