【问题标题】:Do I need an XA Transaction? DefaultMessageListenerContainer local transaction vs XA Connection Factory我需要 XA 交易吗? DefaultMessageListenerContainer 本地事务与 XA 连接工厂
【发布时间】:2016-02-16 12:19:25
【问题描述】:

在我的 Spring Boot 应用程序中,我有以下场景:

  1. 从 JMS 队列中读取消息
  2. 对数据做一些事情。
  3. 对 Oracle 数据库执行 JDBC 插入

如果在任何阶段发生异常,我想确保消息没有丢失并被放入 Backout Queue。

在启用 XA 的 JMS 连接工厂和启用 XA 的 Oracle 数据库驱动程序之间是否需要 XA 事务?或者使用 DefaultMessageListenerContainer 并将 sessionTransacted 标志设置为 true 就足够了吗?

如果第二个是正确的答案,那么使用 XA 事务的好情况是什么?

【问题讨论】:

    标签: java spring transactions spring-jms xa


    【解决方案1】:

    您可以避免 XA,方法是使用 Spring 同步两个事务并对应用程序进行编码以处理重复交付的(小)可能性(当 DB 提交但 JMS 回滚时,例如,由于DB 和 JMS 提交)。我建议您阅读 Spring 团队的 Dave Syer 撰写的出色的 Distributed transactions in Spring, with and without XA

    如果 javaworld 将来某个时候移动该链接,谷歌 syer xa spring 你应该会找到它。

    【讨论】:

    • 非常感谢您的链接!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多