在不触发触发器的情况下启动Quartz Scheduler

时间:2019-05-27 06:43:49

标签: java quartz-scheduler spring-scheduled quartz

我有一个需要启动调度程序的要求,但现有触发器不应运行。我有spring boot应用程序,我想实现一个启动应用程序但不应该将现有触发器运行到系统中的情况。它可以是任何标志或参数库。有什么办法可以做到这一点?我一直在网上检查与此相关的内容,但找不到与此相关的任何内容。

预先感谢

2 个答案:

答案 0 :(得分:0)

可能可以做的是,创建调度程序实例,但不要将autostart设置为true。然后将启动应用程序,但不执行任何触发器。

代码片段在kotlin上,但在Java上应该类似

@Bean
open fun quartzScheduler(springBeanJobFactory: SpringBeanJobFactory): SchedulerFactoryBean {
    val quartzSchedulerFactory = SchedulerFactoryBean()
    quartzSchedulerFactory.setJobFactory(springBeanJobFactory)
    quartzSchedulerFactory.setConfigLocation(ClassPathResource("quartz.properties"))
    quartzSchedulerFactory.setOverwriteExistingJobs(true)
    quartzSchedulerFactory.isAutoStartup = false

    return quartzSchedulerFactory
}

然后您可以创建一些简单的控制器来启动调度程序

schedulerFactory.scheduler.start()

答案 1 :(得分:0)

用Java编写并使用应用程序属性的变量

    @Bean
    @Inject
    SchedulerFactoryBeanCustomizer schedulerCustomizer(
            @Value("${spring.quartz.properties.org.quartz.scheduler.instanceName:schedulerFactoryBean}") String schedulerName,
            @Value("${spring.quartz.properties.org.quartz.scheduler.enabled:true}") boolean enabled) {
        return (schedulerFactoryBean) -> {
            schedulerFactoryBean.setOverwriteExistingJobs(true);
            schedulerFactoryBean.setBeanName(schedulerName);
            schedulerFactoryBean.setAutoStartup(enabled);
        };
    }