我们希望在后台启动一项工作,因此它不会使用应用程序中的所有资源,并且可以影响应用程序的“正常”任务。它应该从正在运行的Java应用程序中启动,而不是从命令行执行。
有人知道如何使用Spring调度作为后台任务/守护进程启动Spring Batch作业吗?
答案 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;
}