Для тех, кто использует Quartz и Spring Boot, у меня возникла такая же проблема после перехода с использования Quartz в Tomcat на Spring Boot. В Tomcat мы использовали файл свойств кварца и вручную загружали его при создании планировщика. Одним из таких свойств было:
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
В Spring Boot планировщик создается автоматически через автоконфигурацию, и поэтому наши свойства не применяются.
Нашим решением было использовать SchedulerFactoryBeanCustomizer
и установить свойства Кварца. Этот настройщик применяется перед созданием планировщика, поэтому он удобен для настройки Quartz.
@Bean
public SchedulerFactoryBeanCustomizer schedulerFactoryBeanCustomizer()
{
return new SchedulerFactoryBeanCustomizer()
{
@Override
public void customize(SchedulerFactoryBean bean)
{
bean.setQuartzProperties(createQuartzProperties());
}
};
}
private Properties createQuartzProperties()
{
// Could also load from a file
Properties props = new Properties();
props.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate");
return props;
}