Quertz一些使用方法、资料和心得

先说一下近况吧;最近在写定时器相关的东西,本身公司有一套定时器的东西,是通过Timer去唤起ScheduleScheduledTreadPoolExector的定时器线程池去实现定时调度的,此方法的好处就是在后台任务中处理的表现较优点,想象一下如每天下载订单信息,定时上传数据信息等等操作,定时任务不是很复杂的东西很容易实现,其二的优点就是已经被集成到公司的框架中,实现起来较为方便

此次由于定时器任务有延迟任务,公司的类库框架已经不能够满足了,调研了一下,发现Quertz可以实现,并且之前自己也实现过小DEMO,所以这次就选择这个框架进行业务处理;

以下是一些总结、文末带上一些参考资料

Quertz基础知识:,个人觉得这篇文档总结的最好,可以先看看这个文档,对下面的阅读有帮助

1 Quertz 持久化和非持久化

持久化

  • 1: 使用Quertz自己的表
    Quertz默认是支持持久化操作的,这个在官方文档已经提供了具体的表结构;这里不在描述,其他博客都有讲,表结构下载地址:下载完资料,里面有建表的SQL 文章介绍地址:Spring框架下持久化操作,创建完之后,需要自己重写quertz的配置文件quertz.properties文件,如下页面;除了数据库地址,可以参考以下配置
    在这里插入图片描述

  • 2: 使用自己公司的业务表
    很多公司都有自己的定时器,我司也有,所以我采取的是这种方式;在系统初始化的时候,将所有的需要装载到Quertz定时器的数据从数据库加载到Quertz内存中,实现定时调度;各大博客文档中spring版本居多;感兴趣的自己去搜索,Spring动态定时器

    如果不基于Spring的做法,其实也很简单,就像我刚才所说,在内存中提供一个全局的Schedule对象调用
    在这里插入图片描述
    有了这个对象之后,就可以使用这个对象生成不同的Job和trigger了;

非持久化:

  1. 1 Quertz默认的位置文件 quertz-perperties 默认使用的是 RAMJobStore,这个job类型就是非持久化的;
  2. 在这里插入图片描述
    一旦应用程序结束,定时器也就结束了;

2 定时器监听器

这篇文章已经介绍的非常详细了,有兴趣的同学自己看看(个人建议还是非常有必要),可以利用quertz的监听器起到数据的监听作用,能够同步更新数据的状态;

3 trigger 相关的设置

首先看看我司设置的定时器
在这里插入图片描述
涉及到执行间隔频率(按照天、周(指定天)、月(指定天数))、每天的执行频率、已经调度器的执行区间、

循环执行部分都可以使用DailyTimeIntervalSchedulerBuilder类来实现,其中必要麻烦的是 间隔周和间隔月份

间隔周、间隔月的处理办法

间隔周:DailyTimeIntervalSchedulerBuilder.dailytimeIntervalSchedule().onDaysOfWeek(/这里这是需要执行的天数就可以/)

间隔月:使用monthlyCalendar,计算需要统计的日期(true表示排除、false表示包含天数)
在这里插入图片描述
在这里插入图片描述
最后修改当前trigger的日期就可以:trigger.modifedCalendar(info.getPlanId); 即可

参考资料:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值