1

我在事务回滚中遇到问题(无法将消息推回原始队列)。

部署在 WAS v7 中的 MDB(容器管理 TX)正在侦听 WebSphere MQ v7 中配置的远程队列。

当我标记 MessageDrivenContext.setRollbackOnly() 时,我可以在 ffdc WAS 日志中看到以下详细信息

com.ibm.websphere.csi.CSITransactionRolledbackException:事务在 com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:561) 的 com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:222) 标记为 rollbackonly )在 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)

看起来事务正在成功回滚,但我无法在队列中看到相同的消息。(队列为空/消息已删除)。

有人能告诉我如何将消息保留在队列中并再次处理吗???

4

1 回答 1

1

我发现回滚的消息放在 SYSTEM.DEAD.LETTER.QUEUE 中。

我检查了 websphere mq 队列管理器的以下属性

1) BOTHRESH(5)
2) BOQNAME(错误队列名称)。

即使在回退计数达到最大值 BOTHRESH 之前,消息也会被放置在默认队列中,而不是配置的错误队列中。

有人可以告诉配置中有什么问题吗?

于 2012-11-15T10:26:35.843 回答