我们认为这是一个相当常见的XA用例:
但是我们还需要一种方法来处理内部错误和有害消息。我们想到的控制流程是这样的:
这是一个很好的方法,我们应该采用不同的方式吗?我们如何用EJB做到这一点?
我们在JBoss AS 7.2 / EAP 6.1上使用EJB 3.1,直接对Narayana进行编码是一种选择。 JDBC驱动程序是ojdbc7-12.1.0.1,JMS RAR是MQ Series(不知道版本)。
答案 0 :(得分:2)
您可以做的是使用Java EE事件机制在事务失败时获取通知并创建后续输出消息。
见
您需要使用新事务写入out队列,以避免回滚写入消息。
您仍会在输入队列中显示导致异常的消息,因为回滚将阻止成功使用。您需要单独处理它,例如由JMS提供程序处理。