#java #spring #spring-boot #quartz-scheduler
Вопрос:
Я использую зависимость spring-boot-starter-quartz, и в приложении у меня есть следующая конфигурация.yaml для кварца
spring:
quartz:
job-store-type: jdbc
jdbc:
initialize-schema: always
properties:
org:
quartz:
scheduler:
instanceId: AUTO
threadPool:
threadCount: 2
jobStore:
class: org.quartz.impl.jdbcjobstore.JobStoreTX
driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
useProperties: false
tablePrefix: SCHEDULER_
isClustered: true
clusterCheckinInterval: 20000
У меня есть следующие компоненты, определенные в конфигурации Quartz
@Bean
JobDetailFactoryBean notificationJobDetail() {
JobDetailFactoryBean bean = new JobDetailFactoryBean();
bean.setJobClass(NotificationJob.class);
return bean;
}
@Bean
CronTriggerFactoryBean notificationCronTrigger() {
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
cronTriggerFactoryBean.setCronExpression(schedulerProperty.getCronNotification());
cronTriggerFactoryBean.setJobDetail(Objects.requireNonNull(notificationJobDetail().getObject()));
return cronTriggerFactoryBean;
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setTriggers(notificationCronTrigger().getObject());
schedulerFactoryBean.setApplicationContextSchedulerContextKey(QUARTZ_APPLICATION_CONTEXT);
return schedulerFactoryBean;
}
Но некоторые свойства application.conf, я думаю, не читаются Quartz, и поэтому кластеризация не работает. В журналах это показывает
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
Комментарии:
1. Вы упомянули, что имя вашего файла конфигурации-application.conf. Что произойдет, если вы переименуете его в application.yml? Spring Boot будет считывать файлы конфигурации application.properties и application.yml/yaml.
2. Извините, на самом деле это приложение.yaml. Обновит вопрос.
3. Автоматическая настройка Spring автоматически создает файл SchedulerFactoryBean с конфигурацией из приложения. файл yaml, поскольку SchedulerFactoryBean создается вручную с аннотацией @Bean, свойства необходимо вручную задать для компонента ref.github.com/spring-projects/spring-boot/blob /…