[英]Transaction Management in Spring batch
我正在使用spring批处理开发一个批处理,我有两个步骤,一个更新了table1的step1和另一个更新了table2的step2。
我想要第二步step2失败,然后取消所有处理(回滚)。 我该怎么办??
我在下面有示例xml配置:
<b:step id="Step1" parent="Tache">
<b:tasklet>
<b:chunk reader="baseReader" processor="baseProcessor"
chunk-completion-policy="completionPolicy" />
</b:tasklet>
</b:step>
<b:step id="Step2" parent="Tache">
<b:tasklet>
<b:chunk reader="baseReaderEcriture"
writer="ecritureWriter" chunk-completion-policy="completionPolicy" />
</b:tasklet>
</b:step>
<b:job id="batch" parent="Batch">
<b:step id="step1" parent="Step1" next="step2"/>
<b:step id="step2" parent="Step2" />
</b:job>
谢谢!
您不能回滚已经提交的数据(在每个块之后-根据您的完成策略-只要提交了春季批处理元数据,您的数据都将保留),因此您不能自动回滚在步骤1中存储的所有数据。
也许您可以使用以下语法:
<b:job id="batch" parent="Batch">
<b:step id="step1" parent="Step1" next="step2"/>
<b:step id="step2" parent="Step2">
<next on="ROLLBACK_ALL" to="deleteDataSavedByStep1Step" />
<end on="*" />
</b:step>
</b:job>
移到用于删除由步骤1保存的数据的步骤旁边,但是您必须在deleteDataSavedByStep1Step
步骤中知道必须删除哪些数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.