我有以下模式
我有两种数据库。 一个是内部数据库,它从http入站网关保存来自5个json数据的数据。 Other是一个外部数据库,它保存5个jsons保存表中的最终反馈数据。
过程如下:
一次交易
①每条消息都保存到每个表中,并将状态返回给发送数据的客户端。
第二次交易
②如果完成5种数据接收,则激活一个服务激活器 查询5个表并制作3种精炼数据,这些数据将保存在外部数据库中。
③下一个连接的频道类型是发布 - 订阅频道。
④每种jdbc-outbound-gateway有3种订阅通道,用于将数据保存到外部数据库。 (有一个rowmapper进程来处理保存多行)
如何设置交易以保证? 请详细告诉我。
答案 0 :(得分:1)
在上游某处(即在tx2的pub子通道之前)添加QueueChannel
并使用<transactional/>
轮询器来启动事务。
或者,插入交易网关...
<int:service-activator ... ref="txGw" />
<int:gateway ... service-interface="TX" />
public interface TX {
@Transactional
Message<?> exchange(Message<?> m);
}
在第二种情况下,您需要<tx:annotation-driven />
启用交易。