spring - 春季批处理:如果未在特定时间完成,则重试作业
问题描述
我正在开发一个使用过的 Spring 批处理应用RetryTemplate
程序SimpleRetryPolicy
。
在此应用程序中,ItemProcessor
通常需要 30-35 分钟才能完成特定任务。但有时,完成同样的任务需要不到 2 小时。
ItemProcessor
如果分配的任务在给定的时间内没有完成,有没有办法重试我的?
我正在寻找一些 Java/Spring 内置功能,而不是编写自己的超时逻辑。
解决方案
您可以定义transactional-attributes
给定的步骤。(https://docs.spring.io/spring-batch/trunk/reference/htmlsingle/#transactionAttributes)
事务属性可用于控制隔离、传播和超时设置。
<step id="step1">
<tasklet>
<chunk reader="itemReader" writer="itemWriter" commit-interval="2"/>
<transaction-attributes isolation="DEFAULT"
propagation="REQUIRED"
timeout="30"/>
</tasklet>
</step>
如果您使用的是 Java 配置,请检查https://stackoverflow.com/a/23921558/1942642。
推荐阅读
- java - 通过 LocalDateFilter 弹簧休息控制器时收到错误请求
- tkinter - 如何在 tkinter 中更改子菜单栏的高度?
- python - 为什么相同操作的精度不同?
- flutter - 使用 Dart 从 Flutter 中的 API 获取数据时出现问题
- python - 如何在 Tkinter 中获取单选按钮的值?
- sql - 使用 GROUP BY 将表与关于类别的列绑定在一起
- reactjs - 怎么设置material-ui持卡人头像?
- android - 屏幕关闭时使用服务中的位置更新 MapView
- mongodb - 在其中一个 id 上执行 $dateToString 时,如何在 mongo 聚合 $group 中使用多个 id
- javascript - 如何在 Javascript 中同时转义 2 个函数