如何将Spring Batch作业作为后台线程启动

时间:2017-02-28 14:30:11

标签: java spring spring-batch

我们希望在后台启动一项工作,因此它不会使用应用程序中的所有资源,并且可以影响应用程序的“正常”任务。它应该从正在运行的Java应用程序中启动,而不是从命令行执行。

有人知道如何使用Spring调度作为后台任务/守护进程启动Spring Batch作业吗?

1 个答案:

答案 0 :(得分:1)

经过一番调查后,我发现你可以为JobLauncher配置一个TaskExecuter。然后,您可以使用SimpleAsyncTaskExector并将其配置为deamon并设置线程优先级。

@Bean
public JobLauncher jobLauncher(final JobRepository jobRepository, final TaskExecutor taskExecutor) {

    final SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
    jobLauncher.setJobRepository(jobRepository);
    jobLauncher.setTaskExecutor(taskExecutor);
    return jobLauncher;
}

@Bean
public TaskExecutor taskExecutor() {

    SimpleAsyncTaskExecutor taskExecutor = new SimpleAsyncTaskExecutor();
    taskExecutor.setDaemon(true);
    taskExecutor.setThreadPriority(Thread.MIN_PRIORITY);
    return taskExecutor;
}