繁体   English   中英

Spring Batch中的XA事务

[英]XA transactions in Spring Batch

我正在用Spring Batch编写许多批处理作业,这些作业大多数都从数据库导出/导入数据库。 Spring Batch作业存储库数据库和目标数据库(我从中读取/写入数据的数据库)位于不同的机器上。

我的问题是我应该在此配置中使用XA事务吗?

我想知道在某个时间点链接到作业存储库数据库制动器时,是否可能破坏数据? 像这样:

  1. 作业已开始(写入作业存储库)
  2. 在事务内读取/处理/写入目标数据库
  3. 链接到作业存储库数据库制动器,作业失败

最后,我更新了目标数据库,但是作业失败,因此在作业重新启动后将再次处理相同的数据。

Spring Batch的读取器/写入器具有禁用临时状态保存的功能(您将属性saveState设置为false)。 这使您可以独立于Spring Batch JobRepository来管理处理状态。

在您的示例中,您将在读取表上维护一个“已处理标志”,并将select语句修改为select * from x where processed = falseselect * from x where processed = false 这将减少您对JobRepository状态的依赖。

请查看http://static.springsource.org/spring-batch/reference/html/readersAndWriters.html#process-indicator对其进行了详细说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM