繁体   English   中英

EJB,XA事务和错误处理

[英]EJBs, XA transactions and error handling

我们认为这是一个相当常见的XA用例:

  1. 从队列中读取消息
  2. 将一些数据写入数据库
  3. 将响应消息写入出队列(与队列不同)

但是,我们还需要一种方法来处理内部错误和有害消息。 我们想到的控制流程是这样的:

  1. 从队列中读取消息
  2. 写入数据库
    • 如果有异常回滚数据库事务
    • 如果没有异常,则在数据库上运行commit phase1
  3. 如果一切顺利(没有回滚并且提交phase1确定)将成功消息写入出队列
  4. 如果数据库上的提交阶段1失败或者存在异常并且数据库事务已回滚,则将失败消息写入外部队列
  5. 提交队列,队列和数据库(除非由于异常而滚动)

这是一个很好的方法,我们应该采取不同的方式吗? 我们如何使用EJB执行此操作?

我们在JBoss AS 7.2 / EAP 6.1上使用EJB 3.1,直接对Narayana进行编码是一种选择。 JDBC驱动程序是ojdbc7-12.1.0.1,JMS RAR是MQ Series(不知道版本)。

您可以做的是使用Java EE事件机制在事务失败时获取通知并创建后续输出消息。

看到

您需要使用新事务写入out队列,以避免回滚写入消息。

您仍然会在输入队列中显示导致异常的消息,因为回滚将阻止成功使用。 您需要单独处理它,例如由JMS提供程序处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM