gpt4 book ai didi

jdbc - EJB、XA 事务和错误处理

转载 作者:行者123 更新时间:2023-12-02 01:57:22 24 4
gpt4 key购买 nike

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

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

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

  1. 从队列中读取消息
  2. 写入数据库
    • 如果有异常回滚数据库事务
    • 如果没有异常在数据库上运行commit phase1
  3. 如果一切顺利(没有回滚和提交 phase1 ok)写一条成功消息到出队列
  4. 如果数据库上的提交阶段 1 失败或出现异常并且数据库事务被回滚,则将失败消息写入出队列
  5. 提交入队列、出队列和数据库(除非因为异常而滚过)

这是一个好方法吗,我们应该采用不同的方法吗?我们如何使用 EJB 做到这一点?

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

最佳答案

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

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

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

关于jdbc - EJB、XA 事务和错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19207664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com