좀 더 조사한 후에 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;
}
스프링 스케줄러 (https://spring.io/guides/gs/scheduling-tasks/)를 사용하여 작업을 예약 할 수 있습니다. 자원 소비에 관해서는 영향을 줄 많은 요소가 있습니다. 메모리가 상대적으로 저렴하기 때문에 필요한 경우 더 많은 메모리를 구입하는 것이 더 나쁜 경우입니다 (즉, 어딘가에서 호스팅되는 경우). – SL07
나는 Spring Scheduler를 사용할 수 있지만 Spring Scheduler가 스레드 우선 순위가 낮은 스레드처럼 실제로 deamon을 생성하는 것은 100 %는 아님을 알고 있습니다. 이것을 검증 할 방법이 있습니까? 또한 특정 사용 사례에서 작업은 실제로 한 번만 실행되어야하며 반복 할 예정이 없어야합니다. – Tranquilized
스프링 스케줄러가 lo 쓰레드 우선 순위로 실행된다는 것을 검증 할 수 없다. 한 번만 실행되는 작업 인 경우 스크립트를 작성하는 것이 더 쉽습니다. Spring 애플리케이션을 사용하여 원하는 조건에 따라 스크립트를 실행할 수 있습니다. – SL07