如何使流程事务?

时间:2014-07-31 16:47:25

标签: spring-integration

我正在使用JMSTrnsactionManager,它能够从队列中读取消息并持久化DB,然后将消息发布到队列/主题。当任何网关/适配器出现故障时,我想回滚整个事务并从数据库回滚数据。我正在使用带有消息驱动通道适配器的Spring Integration框架来读取队列和出站网关,以便持久保存到DB和出站适配器以发布到主题。使用的数据源是CombopooledDataSource。如何在单个事务中执行上述所有操作?

1 个答案:

答案 0 :(得分:1)

您不应在入站适配器上使用JmsTransactionManager - 如果您希望同步数据库事务(ala Best Effort 1PC在我指向您other question的文章中),应该将JDBC事务管理器添加到消息驱动的适配器。您还需要在适配器上设置acknowledge="transacted"

出站JMS适配器将自动使用收到消息的相同事务会话。

将JDBC事务管理器添加到消息驱动的适配器将使数据库事务与JMS事务同步(在JMS事务之前立即提交)。