【发布时间】:2020-11-19 01:38:55
【问题描述】:
我正在尝试通过 Spring Cloud Task 启动参数化 Spring Batch 作业。我的目标是通过命令行启动它,并在作业执行后关闭应用程序。
samples repo 中有一个示例说明如何实现这一点,但这是一个非常简单的工作,没有参数。我在reference documentation 中没有找到我的问题的答案。
--- 编辑:根据迈克尔的问题,我设置了一个简化的示例,它开箱即用。我将研究我的真实示例,同时在此处发布我最初问题的答案---
以下是简化示例:
@Configuration
@EnableTask
@EnableBatchProcessing
public class BatchConfig {
private final static Logger log = LoggerFactory.getLogger(BatchConfig.class.getName());
@Autowired
StepBuilderFactory steps;
@Bean
@StepScope
Tasklet helloTasklet(@Value("#{jobParameters['name']}") String name) {
return new Tasklet() {
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) {
log.info("Hello {}", name);
return RepeatStatus.FINISHED;
}
};
}
@Bean
public Step step1(Tasklet helloTasklet) {
return steps.get("step1").tasklet(helloTasklet).build();
}
@Bean
public Job helloJob(JobBuilderFactory jobs, Step step1) {
return jobs.get("helloJob")
.incrementer(new RunIdIncrementer())
.start(step1)
.build();
}
}
在 pom.xml 中,我有以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-task-batch</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
我编译程序并将其作为可执行 jar 运行。我最初的问题是我不知道如何传入作业参数。请参阅我的答案以了解其工作原理。
【问题讨论】:
-
你是如何尝试启动它的?
-
我用 cloud-task 启动器创建了一个 springboot 应用程序,使用参数设置了一个批处理作业,然后尝试运行可执行 jar。它启动了作业,但由于我不知道如何提供作业参数而崩溃
-
请提供您正在运行的确切命令以及您尝试使用的参数的配置。
标签: spring-boot spring-batch spring-cloud spring-cloud-task