spring-batch - 如何支持通过环境变量将唯一的作业名称传递给 Spring Batch 作业?
问题描述
我刚刚开始使用 Spring Batch。我正在使用带有 Docker 映像的 AWS Batch 开发命令行启动器。试图对作业实例命名进行排序。
在 jobBuilder 中为以下文字字符串使用 @Value 是否可以接受?本质上,我正在传递 S3 文件键,这些键已经是唯一值,因为我有一个在我的 FlatFileReader 运行之前抓取文件的任务。目标是在由于失败而需要时促进对作业的重试。
@Bean
public Job jobParametersJob() {
return jobBuilderFactory.get("PassedInValue")
.start(step1())
.next(step2())
.next(step3())
.build();
}
解决方案
我最终通过使用实现 JobParametersIncrementer 的作业增量器来解决。请注意,在我的情况下,我目前没有传递任何作业参数,所以这里设置它们,因为我的参数目前只是通过环境变量传递给 docker 容器。
public class JobIncrementer implements JobParametersIncrementer {
@Value("${s3filekey}")
String s3filekey;
@Override
public JobParameters getNext(JobParameters jobParameters) {
return new JobParametersBuilder().addString("s3filekey",s3filekey).toJobParameters();
}...//then in job configuration...
@Bean
public Job jobParametersJob() {
return jobBuilderFactory.get("jobParametersJob")
.incrementer(jobIncrementer)
.start(step1())
.next(step2())
.next(step3())
.build();
}
推荐阅读
- php - 将登录用户从特定页面重定向到 Woocommerce 我的帐户页面
- javascript - Neo4j/React:解析 Neo4j 结果以用于 React
- mysql - MySQL SubString 提取精确部分
- bootstrap-4 - 引导网格 sm 或 xs 不工作
- python - 为什么这个for循环提前结束?蟒蛇 3.6
- python - 从“A”列中查找当前日期并在“B”列中更新当前时间(Excel 2010)
- r - 将分类变量传播到新的非布尔列中
- bigcommerce - BigCommerce 更改订单历史视图
- spring-boot - spring boot2.x 和 ehcache3.5 基于注解报错
- entity-framework - DbContext,连接 Web 服务而不是数据库