springboot中如何做一个开关,启用和停用quartz

发布于 2022-01-01 11:08:59 字数 137 浏览 778 评论 11

使用Spring Boot 2.x 做了一个后台管理系统,集成了Quartz功能,但有些工程需要用到定时任务,有些工程不会用到定时任务,有没有办法做一个设置,能够在用不到定时任务的工程中停用quartz,这样最起码不用创建quartz数据库,减少一定的施工难度

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

樱花落人离去 2022-01-08 04:12:45

早就有了:https://gitee.com/52itstyle/spring-boot-quartz

基于spring-boot+quartz的CRUD动态任务管理系统,适用于中小项目。

基于spring-boot 2.x +quartz 的CRUD任务管理系统:https://gitee.com/52itstyle/spring-boot-task

2022-01-08 04:11:10

这个开关是如果是写在配置文件中,那修改一次就需要重启一次吧

坏尐絯 2022-01-08 03:46:33

引用来自“凉茶未凉”的评论

@ConditionalOnProperty(value = "backsys.useQuartz", havingValue = "true", matchIfMissing = false)

value改成name试试

左岸枫 2022-01-08 03:21:46

@ConditionalOnProperty(value = "backsys.useQuartz", havingValue = "true", matchIfMissing = false)

value改成name试试

无人问我粥可暖 2022-01-08 03:09:19
@Configuration
@EnableScheduling
@ConditionalOnProperty(value = "backsys.useQuartz", havingValue = "true", matchIfMissing = false)
public class QuartzConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.quartz")
    public QuartzProperties quartzProperties() {
        return  new QuartzProperties();
    }

    public HikariDataSource quzrtzDataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        quartzProperties().config(dataSource);
        return dataSource;
    }

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean() {
        SchedulerFactoryBean factory = new SchedulerFactoryBean();
        factory.setDataSource(quzrtzDataSource());
        // quartz参数
        Properties prop = new Properties();
        prop.put("org.quartz.scheduler.instanceName", "MyScheduler");
        prop.put("org.quartz.scheduler.instanceId", "AUTO");
        // 线程池配置
        prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
        prop.put("org.quartz.threadPool.threadCount", "20");
        prop.put("org.quartz.threadPool.threadPriority", "5");
        // JobStore配置
        prop.put("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX");
        // 集群配置
        prop.put("org.quartz.jobStore.isClustered", "true");
        prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");
        prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1");

        prop.put("org.quartz.jobStore.misfireThreshold", "12000");
        prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
        factory.setQuartzProperties(prop);

        factory.setSchedulerName("MyScheduler");
        // 延时启动
        factory.setStartupDelay(1);
        factory.setApplicationContextSchedulerContextKey("applicationContextKey");
        // 可选,QuartzScheduler
        // 启动时更新己存在的 Job,这样就不用每次修改 targetObject后删除 qrtz_job_details表对应记录了
        factory.setOverwriteExistingJobs(true);
        // 设置自动启动,默认为 true
        factory.setAutoStartup(true);

        return factory;
    }
}

 

归途 2022-01-08 02:56:59

这个知道,关键是不知道应该写在哪个地方 我已经QuartzConfig类上使用了,但好像没有起作用,quartz相关对象还是会启动

谁的新欢旧爱 2022-01-08 02:37:49

回复
@罗树鹏 : 贴代码,配置文件,你这样子说没人知道什么问题的

泛泛之交 2022-01-07 23:20:57

回复
代码已经贴上来了,请赐教

多情癖 2022-01-07 22:27:25

了解下@ConditionalOnProperty

清晨说ぺ晚安 2022-01-06 08:30:59

没搞过,但应该可以这样:你可以将Quartz的引用在pom.xml中的scope写成optional,然后自己实现一个autoconfigure,当发现当前工程有quartz的包时才对quartz的相关Bean进行声明

终陌 2022-01-04 03:28:01

集成springcloud配置中心,修改配置可以实时生效

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文