[英]XA transactions in Spring Batch
我正在用Spring Batch编写许多批处理作业,这些作业大多数都从数据库导出/导入数据库。 Spring Batch作业存储库数据库和目标数据库(我从中读取/写入数据的数据库)位于不同的机器上。
我的问题是我应该在此配置中使用XA事务吗?
我想知道在某个时间点链接到作业存储库数据库制动器时,是否可能破坏数据? 像这样:
最后,我更新了目标数据库,但是作业失败,因此在作业重新启动后将再次处理相同的数据。
Spring Batch的读取器/写入器具有禁用临时状态保存的功能(您将属性saveState
设置为false)。 这使您可以独立于Spring Batch JobRepository来管理处理状态。
在您的示例中,您将在读取表上维护一个“已处理标志”,并将select语句修改为select * from x where processed = false
的select * 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.