Я просто хочу задать несколько вопросов о Quartz, PostgreSQL и моем приложении для весенней загрузки.
У меня есть база данных PostgreSQL с именем «scheduleDemo». Там есть таблицы для расписаний, заданий и триггеров.
Однако я хочу иметь два разных приложения для весенней загрузки, которые выполняют разные типы заданий с использованием некоторого logi c.
Мои quartz.properties одинаковы, за исключением обоих приложений, но
org.quartz.scheduler.instanceName; это другое.
org.quartz.scheduler.instanceName=springBootQuartzApp2
org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.threadCount=5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.useProperties=false
org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.tablePrefix=qrtz_
org.quartz.jobStore.isClustered=false
org.quartz.plugin.shutdownHook.class=org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownHook.cleanShutdown=TRUE
org.quartz.jobStore.dataSource = abc
org.quartz.dataSource.abc.driver = org.postgresql.Driver
org.quartz.dataSource.abc.URL = jdbc:postgresql://localhost:5432/scheduledemo
org.quartz.dataSource.abc.user = postgres
org.quartz.dataSource.abc.password = postgres
У меня есть SchedulerFactoryBean, как этот
@Bean
public SchedulerFactoryBean schedulerFactoryBean() throws IOException {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setOverwriteExistingJobs(true);
factory.setQuartzProperties(quartzProperties());
AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
jobFactory.setApplicationContext(applicationContext);
factory.setJobFactory(jobFactory);
return factory;
У меня есть два разных класса, которые реализуют интерфейс Job кварца, например SimpleJob1.class и SimpleJob2.class. Из-за того, что они разные Планировщик, не должны ли они заражать друг друга?
Когда я отправляю SimpleJob1.class из своего первого приложения, и если он пропускает время срабатывания, мое второе приложение выдает ошибку. Beucase в моем втором приложении весенней загрузки нет SimpleJob1.class.
2020-05-06 18:35:15.356 INFO 31171 --- [_MisfireHandler] org.quartz.impl.jdbcjobstore.JobStoreTX : Handling 3 trigger(s) that missed their scheduled fire-time.
2020-05-06 18:35:15.364 ERROR 31171 --- [_MisfireHandler] org.quartz.impl.jdbcjobstore.JobStoreTX : MisfireHandler: Error handling misfires: Couldn't store trigger 'DEFAULT.alpcxsxsa2n' for 'SampleGroup.alpcxsxsa2n' job:Couldn't retrieve job because a required class was not found: com.javabypatel.demo.job.SimpleJob1
org.quartz.JobPersistenceException: Couldn't store trigger 'DEFAULT.alpcxsxsa2n' for 'SampleGroup.alpcxsxsa2n' job:Couldn't retrieve job because a required class was not found: com.javabypatel.demo.job.SimpleJob1
Моя конфигурация плохая? Или это плохая практика?
Это плохой вопрос, но я не настраивал dataSource с помощью Spring? Следует ли мне отправлять dataSource с помощью springJpa?
Спасибо !!
Любая идея мне поможет!