WebSphere Application Server V7中使用WebSphere MQ v7的rollback()

时间:2012-11-14 18:13:35

标签: jms ibm-mq websphere-7 ibm-was

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

在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)

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

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

1 个答案:

答案 0 :(得分:1)

我发现回滚的邮件放在SYSTEM.DEAD.LETTER.QUEUE中。

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

1)BOTHRESH(5)
2)BOQNAME(ERROR QUEUE NAME)。

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

有人能说出配置错误吗?