1

トランザクションのロールバックで問題に直面しています (メッセージを元のキューにプッシュできません)。

WebSphere MQ v7 で構成されたリモート キューをリッスンする WAS v7 にデプロイされた MDB (コンテナー管理 TX)。

MessageDrivenContext.setRollbackOnly() をマークすると、ffdc WAS ログに以下の詳細が表示されます

com.ibm.websphere.csi.CSITransactionRolledbackException: com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:222) で rollbackonly とマークされたトランザクション 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)

トランザクションが正常にロールバックされているように見えますが、キューに同じメッセージが表示されません (キューが空である/メッセージが削除されている)。

メッセージをキューに保持して再度処理する方法を教えてもらえますか???

4

1 に答える 1

1

ロールバックされたメッセージがSYSTEM.DEAD.LETTER.QUEUEに配置されていることがわかりました。

webspheremqキューマネージャーの次のプロパティを確認します

1)BOTHRESH(5)
2)BOQNAME(エラーキュー名)。

バックアウトカウントが最大BOTHRESHに達する前であっても、メッセージは設定されたエラーキューではなくデフォルトキューに配置されます。

誰かが構成の何が悪いのかを知ることができますか?

于 2012-11-15T10:26:35.843 に答える