【问题标题】:Manipulating order of XA resources操纵 XA 资源的顺序
【发布时间】:2023-01-12 05:28:55
【问题描述】:

有没有办法在 quarkus 的事务中操纵执行已注册 XAResources 的顺序? 在我的场景中,我在配置的 XA 事务中有一个数据库数据源和一个 ActiveMQ 资源。对我来说,似乎没有明确的顺序,在两阶段提交期间首先处理哪个资源,最后处理哪个资源。

我的问题是,有时最终提交首先对消息传递系统完成,因此服务 A 的事件在数据库完成最终提交之前发布 - 该事件由另一个试图从服务 A 获取数据的服务 B 处理 -在极少数情况下,服务 B 从服务 A 接收数据,该数据处于事件发布之前的状态,因为数据库上的两阶段提交的最终提交仍在进行中。

IMO 最好的解决方案是始终将 ActiveMQ 资源作为两阶段提交中的第二个(或最后一个)资源来处理。

【问题讨论】:

    标签: activemq quarkus xa two-phase-commit narayana


    【解决方案1】:

    从 Thorntail 迁移后,我们遇到了同样的问题。 Narayana(Quarkus 使用的事务管理器)似乎不支持按照这个(尽管旧)thread on JBoss Community Archive 进行排序。评论的作者指出,可以通过实现 org.jboss.tm.FirstResource 的资源来完成排序,但我们还没有尝试过。

    我们目前的解决方案是通过 JMS 消息上的 _AMQ_SCHED_DELIVERY 属性使用延迟,让 DB 有足够的时间在消息被使用之前提交。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      相关资源
      最近更新 更多