队
我正在做一个技术工作,用于从平面文件中读取记录并将数据插入数据库。
我正在使用chunk任务并成功使用spring batch admin运行此作业。
我必须实现重试策略以及设置每次重试之间的时间间隔的功能。我很难设置每次重试之间的时间间隔,因为chuck不直接支持它。这有什么工作吗?
我的代码是
<batch:job id="importDataJob" job-repository="jobRepository">
<batch:step id="importDataStep">
<batch:tasklet transaction-manager="transactionManager">
<batch:chunk reader="dataReader" writer="dataWriter" commit-interval="1" retry-limit="3">
<batch:retryable-exception-classes>
<batch:include class="javax.naming.ServiceUnavailableException" />
</batch:retryable-exception-classes>
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
答案 0 :(得分:5)
在您的情况下,配置将如下所示:
Spring Batch 2.x
<bean id="stepParent" class="org.springframework.batch.core.step.item.FaultTolerantStepFactoryBean" abstract="true">
<property name="backOffPolicy">
<bean class="org.springframework.batch.retry.backoff.FixedBackOffPolicy"
<property name="backOffPeriod" value="2000" />
</bean>
</property>
</bean>
<batch:job id="importDataJob" job-repository="jobRepository">
<batch:step id="importDataStep" parent="stepParent">
...
</batch:step>
</batch:job>
不幸的是,batch
命名空间不支持将backOffPolicy
直接设置为step
,请参阅BATCH-1441。
Spring Batch 3.0
在Spring Batch 3.0中,一些类已移至其他包。这是配置片段:
<bean id="stepParent"
class="org.springframework.batch.core.step.factory.FaultTolerantStepFactoryBean"
abstract="true">
<property name="backOffPolicy">
<bean class="org.springframework.retry.backoff.FixedBackOffPolicy">
<property name="backOffPeriod" value="2000"/>
</bean>
</property>
</bean>