我有一个由多个数据源组成的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写入各自的数据源。这个流程中是否会使用链式事务管理器?
答案 0 :(得分:1)
你所说的一切都是好的和正确的。
只有您必须在一个线程中完成所有工作的问题,因为这只是您可以将多个资源用于一个事务的方式。实际上,当您使用publish-subscribe-channel
默认配置时会出现这种情况,在同一个线程中,第一个订阅者将调用其templateA
;只有在那之后,第二个服务才会调用其templateB
。
因此,ChainedTransactionManager
也应配置该订单。
从这里开始,如果你使用XA事务管理器也没关系。重点是单线程。