2012-11-14 62 views
1

我在事務回滾中遇到問題(無法將消息推回原始隊列)。使用WebSphere MQ v7在WebSphere Application Server V7中回滾()

部署在WAS v7中的MDB(容器管理的TX)正在監聽WebSphere MQ v7中配置的遠程隊列。

當我標誌着MessageDrivenContext.setRollbackOnly()我可以看到在FFDC下面的詳細資料已記錄

com.ibm.websphere.csi.CSITransactionRolledbackException:交易在com.ibm.ejs rollbackonly 標.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) a牛逼com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:496) 在com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1527)

它看起來像事務成功回滾,但我無法在隊列中看到相同的消息(隊列爲空/消息被刪除)。

有人可以告訴我如何保留隊列中的消息,並再次處理它?

回答

1

我發現回滾的消息放在SYSTEM.DEAD.LETTER.QUEUE中。

我檢查WebSphere MQ隊列管理

1)BOTHRESH(5)
2)BOQNAME(ERROR隊列名稱)的下列性質。

即使在退出計數可能達到最大值之前BODHRESH messaged被放置在默認隊列中而不是配置的錯誤隊列中。

有人可以告訴配置有什麼問題嗎?

相關問題