我们希望在后台启动作业,以便它不会使用应用程序内的所有资源,并且会影响应用程序的“正常”任务。它应该从正在运行的Java应用程序内部启动,而不是从命令行执行。
有人知道如何使用Spring调度将Spring Batch作业作为后台任务/守护程序启动吗?
最佳答案
经过更多调查后,我发现您可以为JobLauncher配置TaskExecuter。然后,您可以使用SimpleAsyncTaskExector并将其配置为守护进程并设置线程优先级。
@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;
}