多个数据源,多个事务管理器。使用哪一个?

时间:2016-06-13 21:35:42

标签: spring spring-integration

我有一个由多个数据源组成的SI配置。 说:DataSource A - 连接到Oracle      DataSource B - 连接到DB2      DataSource C - 连接MySQL

其中一个SI子流写入其中两个数据源,我想在1-PC事务中执行此操作。

所以我用DataSource A和DataSource B定义了一个ChainedTransactionManager。让我们调用这个chainedTransactionMgr

我还有两个jdbc模板templateA(用A作为数据源)和templateB(用B作为数据源)

假设我有一个流程,我将消息发送到发布 - 订阅频道,其中两个收件人是服务激活器,只使用templateA和templateB将msg写入各自的数据源。这个流程中是否会使用链式事务管理器?

1 个答案:

答案 0 :(得分:1)

你所说的一切都是好的和正确的。

只有您必须在一个线程中完成所有工作的问题,因为这只是您可以将多个资源用于一个事务的方式。实际上,当您使用publish-subscribe-channel默认配置时会出现这种情况,在同一个线程中,第一个订阅者将调用其templateA;只有在那之后,第二个服务才会调用其templateB

因此,ChainedTransactionManager也应配置该订单。

从这里开始,如果你使用XA事务管理器也没关系。重点是单线程