使用Atomikos是一个更好的整体解决方案。在某些情况下可以使用ChainedTransactionManager。它所做的假设在Javadocs中陈述:
PlatformTransactionManager实现,用于编排事务创建、提交和回滚到委托列表。使用此实现假定导致事务回滚的错误通常发生在事务完成之前或提交最内部的PlatformTransactionManager期间。
配置的实例将按照给定的顺序启动事务,并按照相反的顺序提交/回滚,这意味着最有可能中断事务的PlatformTransactionManager应该是配置的列表中的最后一个。在提交期间引发异常的PlatformTransactionManager将自动导致其余事务管理器回滚而不是提交。
Apache ShardingSphere 默认的 XA 事务管理器为 Atomikos。 数据恢复 在项目的 logs 目录中会生成xa_tx.log, 这是 XA 崩溃恢复时所需的日志,请勿删除。 修改配置 可以通过在项目的 classpath 中添加 jta.properties 来定制化 Atomikos 配置项。 详情请参见Atomikos官方文档。
我不确定是否正确集成? 可以从获取数据源吗? Hiberante配置与是否正确? 由于它嵌入在JVM中,不由容器管理,JTATransactionManager能够识别ActimeMQ吗?
并用@Transactional注释了具体类。 我们使用Jboss应用服务器支持通过JNDI与MQ集成。这里的问题是,如果监听器中的任何层有任何异常,则整个事务不会回滚,消息也不会移动到退出队列。很明显,当我们使用Hibernate事务管理器时,它不知道其他资源,如JMS事务。 我可以安全地用JTA事务替换它吗,因为Jboss将处理整个事务管理?这样做是否有任何可预见的风险?
我使用Atomikos事务管理器管理Spring-Boot独立应用程序中的分布式事务,使用Apache Camel集成ActiveMQ队列和postgresql DB(JPA via Hibernate5)。我的问题是在我的日志中打印了很多类似下面这样的消息。 为什么一直打印这些日志? 我认为超时(ActiveMQ组件、Datasource或Atomikos)配置不佳,但我不知道如何开始研究它。
我的独立应用程序已经使用narayana事务管理器与其他XA资源进行JTA事务,现在我也在尝试将其与Hiberante集成。因此Hibernate事务也在JTA超越范围内执行- hibernate.cfg.xml 其他爪哇会议 - 这就是我开始交易的方式 - 现在的问题是,db只在调用sessionFactory.close()后才显示会话的更改,而不是应该在transactionManager.
我使用Grails2.3.3构建了一个成功的应用程序。 下面是PicturesNWSHR的域定义: -迈克