我已經成功開發了一個SpringBoot和Quartz應用程序,該應用程序只使用爲特定作業定義的Cron表達式執行一個作業。我的實施主要基於以下文章中的信息。使用Springboot和Quartz自己的Cron表達式安排多個作業
https://chynten.wordpress.com/2016/06/17/quartz-with-databse-and-spring-4/
在那裏,你可以看到,作業觸發正在使用的封裝cron表達式一個bean來完成。
@Bean
public Trigger simpleJobTrigger(@Qualifier("simpleJobDetail") JobDetail jobDetail) {
CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
factoryBean.setJobDetail(jobDetail);
factoryBean.setStartDelay(0L);
factoryBean.setName("test-trigger");
factoryBean.setStartTime(LocalDateTime.now().toDate());
factoryBean.setCronExpression("0/20 * * * * ?");
factoryBean.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
try {
factoryBean.afterPropertiesSet();
} catch (ParseException e) {
e.printStackTrace();
}
return factoryBean.getObject();
}
現在,我需要根據自己的cron表達式創建多個應該觸發的作業。在上述情況下,整個項目只有一個cron,因此我沒有問題。但現在,不同的工作應該有不同的規劃。
如何擴展當前實現以支持具有不同cron的多個作業?是的,我對此做了一些研究,但是找不到有關如何配置Spring引導bean來滿足我的需求的任何信息。
一些示例使用石英JobBuilder
來定義作業。這是我應該遵循的方式,還是我可以擴展當前的實施以支持多個工作?
下面的鏈接中的問題看起來很相似,但我無法理解如何分別將不同的cron表達式和其他指令(如失火指令)分別傳遞給每個作業。
Autowiring in Quartz multiple Jobs with Spring Boot not working