我正在用Spring Batch编写大量批量作业,这些批量作业主要是从数据库导出/导入数据库。 Spring Batch作业存储库数据库和目标数据库(来自/我读/写数据)位于不同的机器上。春季批次中的XA交易
我的问题是我应该在此配置中使用XA事务吗?
我想知道在某些时候连接到作业存储库数据库刹车的场景,它是否会潜在地破坏数据?就像这样:
- 工作启动(写入工作资料库)
- 读/流程/事务中的目标DB写入
- 链接到工作仓库分贝刹车和作业失败
最后我更新了目标数据库,但作业失败,因此在作业重新启动时将再次处理相同的数据。
这将有所帮助,但问题是我无法修改读取表结构。 – Vladimir
所以我们回到了jobRepository设计的目的;在没有另一种机制的情况下保持状态。我的建议是通过一个监听器保存一个线性的,非事务性的状态日志,或者如果它们成为JobRepository上的失败,可以用来协调。这将允许您在出现非常规故障的情况下进行协调和处理。 –