程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么Spring Boot Batch作业仅运行一次?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么Spring Boot Batch作业仅运行一次??

开发过程中遇到为什么Spring Boot Batch作业仅运行一次?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么Spring Boot Batch作业仅运行一次?的解决方法建议,希望对你解决为什么Spring Boot Batch作业仅运行一次?有所启发或帮助;

这就是我能想到的

1.您将此属性放在application.propertIEs中,因此您的批处理作业不会通过调用SpringApplication.run(...)from@H_703_5@main方法自动启动。

spring.batch.job.enabled=false

这将仅初始化您的Spring Batch配置,而不实际启动作业。

2. @Enablescheduling 在您的Spring Boot Batch Job起始类上添加注释,即在Application 代码中的类上。

3.取出@Enablescheduling从注释Jobscheduler类和呼叫,jobLauncher.run(job, jobParameters)runJob()而不是调用SpringApplication.run(MyBatchConfig.class)

JobLauncher``Job因为上下文已经初始化,所以&bean可以自动连接到您的调度程序类。

希望能帮助到你 !!

解决方法

我正在使用弹簧靴。我有一个使用这些类实现的批处理作业:

我的主要课程是:

@SpringBootApplication
@ComponentScan("com.batch")
@Propertysource("classpath:application.properties")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

}

我的调度程序是:

@Component
@Enablescheduling
public class Jobscheduler {

    @scheduled(fixedRate = 10000)
    public void runJob() {
        SpringApplication.run(MyBatchConfig.class);
    }
}

我的批处理配置类是:

@Configuration
@EnableBatchProcessing
public class MyBatchConfig {

    @Value("${database.driver}")
    private String databaseDriver;
    @Value("${database.url}")
    private String databaseUrl;
    @Value("${database.usernamE}")
    private String databaseUsername;
    @Value("${database.passworD}")
    private String databasepassword;

    @Bean
    public Job myJob(JobBuilderFactory jobs,Step s) {
        Job job = jobs.get("myJob")
                .incrementer(new RunIdIncrementer())
                .flow(s)
                .end()
                .build();
        return job;
    }

    @Bean
    public Step myStep(StepBuilderFactory stepBuilderFactory,ItemReader<Account> reader,ItemWriter<Person> writer,ItemProcessor<Account,Person> processor) {
        TaskletStep step = stepBuilderFactory.get("myStep")
                .<Account,Person>chunk(1)
                .reader(reader)
                .processor(processor)
                .writer(writer)
                .build();
        step.setAllowStartIfComplete(true);
        return step;
    } ...

现在,我的问题是:

调度程序可以工作,并且每十秒钟重复一次,但是作业仅在应用程序启动时执行(读取器,处理器和编写器在启动时仅执行一次),并且似乎

SpringApplication.run(MyBatchConfig.class);

对重新运行作业没有影响。

该怎么办

提前致谢

大佬总结

以上是大佬教程为你收集整理的为什么Spring Boot Batch作业仅运行一次?全部内容,希望文章能够帮你解决为什么Spring Boot Batch作业仅运行一次?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。