gpt4 book ai didi

spring - 从 Controller 运行 Spring 批处理作业

转载 作者:IT老高 更新时间:2023-10-28 13:55:49 29 4
gpt4 key购买 nike

我正在尝试从 Controller 运行我的批处理作业。它将由 cron 作业或通过访问特定链接来启动。我使用的是 Spring Boot,没有 XML 只是注释。

在我当前的设置中,我有一个包含以下 bean 的服务:

@EnableBatchProcessing
@PersistenceContext
public class batchService {

@Bean
public ItemReader<Somemodel> reader() {
...
}

@Bean
public ItemProcessor<Somemodel, Somemodel> processor() {
return new SomemodelProcessor();
}

@Bean
public ItemWriter writer() {
return new CustomItemWriter();
}

@Bean
public Job importUserJob(JobBuilderFactory jobs, Step step1) {
return jobs.get("importUserJob")
.incrementer(new RunIdIncrementer())
.flow(step1)
.end()
.build();
}

@Bean
public Step step1(StepBuilderFactory stepBuilderFactory,
ItemReader<somemodel> reader,
ItemWriter<somemodel> writer,
ItemProcessor<somemodel, somemodel> processor) {

return stepBuilderFactory.get("step1")
.<somemodel, somemodel> chunk(100)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
}

只要我将 @Configuration 注释放在我的 batchService 类的顶部,作业就会在我运行应用程序后立即开始。它成功地完成了,一切都很好。现在我正在尝试删除 @Configuration 注释并在需要时运行它。有没有办法从 Controller 触发它?

谢谢!

最佳答案

你需要在 src/main/resources 中创建一个 application.yml 文件并添加如下配置:

spring.batch.job.enabled: false

通过此更改,批处理作业将不会随着 Spring Boot 的启动而自动执行。特定链接时会触发批处理作业。

在此处查看我的示例代码: https://github.com/pauldeng/aws-elastic-beanstalk-worker-spring-boot-spring-batch-template

关于spring - 从 Controller 运行 Spring 批处理作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28566341/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com