gpt4 book ai didi

java - Spring批处理中的事务管理

转载 作者:行者123 更新时间:2023-11-30 08:29:51 25 4
gpt4 key购买 nike

我正在使用 spring batch 开发一个批处理,我有两个步骤,一个更新 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>

谢谢!

最佳答案

您无法回滚已经提交的数据(在每个 block 之后 - 基于您的完成策略 - 只要提交了 spring-batch 元数据,您的数据),因此您无法自动回滚步骤 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 步骤中必须删除哪些数据。

关于java - Spring批处理中的事务管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19031190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com