gpt4 book ai didi

Spring Batch - 提交间隔的后期绑定(bind)不适用于跳过策略

转载 作者:行者123 更新时间:2023-12-04 21:37:23 25 4
gpt4 key购买 nike

我正在尝试对 block 的提交间隔属性使用后期绑定(bind)。

当 block 不包含跳过策略或重试策略时,它工作正常但一旦添加跳过策略(甚至重试策略),提交间隔就不会被考虑在内并且批处理就像提交间隔设置为 1 一样工作。奇怪的是,当提交间隔被硬编码时,它工作正常......

所以这个配置工作正常:

<chunk reader="multiAccuseReceptionItemReader" 
processor="enrichissementPrescriptionItemProcessor"
writer="prescriptionItemWriter"
commit-interval="#{jobExecutionContext['commits']}">

这个也很好用:

<chunk reader="multiAccuseReceptionItemReader" 
processor="enrichissementPrescriptionItemProcessor"
writer="prescriptionItemWriter"
skip-policy="skipPolicy"
commit-interval="3">

但是这个没有考虑提交间隔并将其设置为 1 :

<chunk reader="multiAccuseReceptionItemReader" 
processor="enrichissementPrescriptionItemProcessor"
writer="prescriptionItemWriter"
skip-policy="skipPolicy"
commit-interval="#{jobExecutionContext['commits']}">

我尝试将完成策略与 simpleCompletionPolicy 而不是提交间隔一起使用,但情况更糟:当存在跳过策略或重试策略时,不会考虑 chunkSize,即使它是硬编码。在没有任何跳过策略或重试策略的情况下,chunkSize 被考虑在内(硬编码或后期绑定(bind))。

我正在使用 Spring Batch 2.2.0(并且无法更改)。

为什么会有这种行为?如何使用跳过策略和重试策略动态设置提交间隔?

最佳答案

这是 org.springframework.batch.core.configuration.xml.StepParserStepFactoryBean 类中 spring-batch 的一个已知错误:https://jira.spring.io/browse/BATCH-2096 .

已在 2.2.2 版本中更正。

所以最好的解决方案是升级到 spring-batch 的 v2.2.2(与 2.2.0 相同,但修正了一些错误)。

如果 - 像我一样 - 你真的无法升级,那么最好的方法是从 git (tag 2.2.2) 复制类 org.springframework.batch.core.configuration.xml.StepParserStepFactoryBean| ,将它添加到您的源代码中,并确保您的源代码在类路径中的 spring-batch-core jar 之前加载。

关于Spring Batch - 提交间隔的后期绑定(bind)不适用于跳过策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27066053/

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