繁体   English   中英

春季批量交易管理

[英]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.

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