java - 如何使用弹簧批处理在作业中动态添加步骤
问题描述
我正在使用弹簧批处理,其中我有一个用例来配置具有动态步骤的作业。步骤数将取决于用户发送的请求。目前我正在使用 tasklet 方法来处理该步骤。
我不想分块处理数据。
任何解决此问题的方法,因此我可以使用动态步骤配置作业。
请从 JobConfiguration 中找到代码片段。
@Bean
public Job createBatchJob() {
return jobFactory.get(JOB_TYPE)
.preventRestart()
.start(step1())
.build();
}
@Bean
public Step step1() {
return stepFactory.get(STEP_TYPE)
.tasklet(batchTasklet).build();
}
如何在上述配置中配置动态步骤?
解决方案
这是一种不同的情况,与如何在 Spring Batch 中创建动态步骤不完全相同。
基本上,我们需要动态步骤,但要在构建作业后懒惰地添加到作业中。
所以说我已经配置了一个工作,来处理一些文件。但是用户请求批处理并可以提交多个文件,现在基于用户通过 Rest api 提交的文件数量,我想将这些步骤添加到创建的作业中。
这种情况下是否支持在构建后向作业添加步骤?
或者有没有办法动态创建作业配置。
希望这能澄清这个问题。
推荐阅读
- vim - vim ipython 在带有 eclim 的分屏中
- identityserver4 - 长时间运行任务的访问令牌
- zebra-printers - 如何在 Zebra 打印机上使用 EPL2 进行打印作业后禁用额外的进纸/分隔页?
- ecmascript-6 - 浏览器控制台 [错误]:未捕获的 SyntaxError:来自 WebGL.js 的意外令牌“导出”
- python-3.x - 一旦另一个函数完成,ProgressBar 是否有可能达到 100%?
- git - 我无法运行任何 git 命令(“不是 git 存储库”错误)
- sql - PostgeSQL - 如何将具有相同 id 的多行的某些字段放在单行的预定义行中
- javascript - 在 Typescript 中扩展内置类型
- python - 熊猫单位置索引器超出范围
- c++ - 在 Qt “no matching function for call to 'connect'” 出现错误