我正在使用Spring Batch编写许多批处理作业,这些作业主要是从/向数据库导出/导入。 Spring Batch作业存储库数据库和目标数据库(从/向我读/写数据)位于不同的机器上。
我的问题是我应该在此配置中使用XA事务吗?
我想知道在某个时间点链接到作业存储库db brakes的情况,是否会破坏数据?像这样:
最后我更新了目标数据库,但作业失败,因此在作业重启后将再次处理相同的数据。
答案 0 :(得分:1)
Spring Batch在其读取器/写入器中具有禁用临时状态保存的功能(将属性saveState
设置为false)。这允许您独立于Spring Batch JobRepository管理处理状态。
select * from x where processed = false
。这样可以减少对JobRepository状态的依赖。
查看http://static.springsource.org/spring-batch/reference/html/readersAndWriters.html#process-indicator,更详细地解释一下。