目录
前言
在悦享校园1.0中引入了Quartz框架实现了对于商家每日的销量统计功能,而目前项目已升级到SpringBoot版本,因此需要进行对应的代码进行调整。除此之外考虑到若Redis出现故障时或使用该项目不想要配置Redis时如何保证该项目正常启动呢?即当Redis出现故障时如何无缝切换到数据库查询数据而不是抛出错误信息?由于项目中整合Redis的客户端为Lettuce,因此可以考虑使定时任务实现对Redis服务的监测从而无感切换数据查询操作。
环境配置
JDK 1.8
Spring Boot 2.7.12
lettuce 6.1.10(包含在Spring-Boot-Starter-Data-Redis中)
Quartz 2.3.2
Quartz
什么是Quartz?
根据官方文档描述,Quartz 是一种功能丰富的,开放源码的作业调度库,可以在集成在任何的Java应用程序中,小到独立的应用程序,大到复杂的电子商务系统。 Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至数以万计的作业数,作业被定义为标准的Java组件,可以通过编程使其执行。
应用场景
如文章开头所述,当我们需要统计店铺的每日销量或者每周销量时,可以通过一个定时任务来执行相应的操作。以及Redis由于长时间不使用时可能会造成客户端除此之外,也可以将Quartz使用到如定期发送消息通知,如获取每日天气进行邮件推送到指定客户等其它的操作。这些都可通过Quartz来实现。除此之外Quartz还能完成其它复杂的任务。
核心组件
Job
用于存放真正需要定时执行的任务逻辑
JobDetail
用于对任务信息的相关描述,如任务名称、任务分组等。需要注意的是,JobDetail中含有一个Key属性,该属性将通过传入的任务名称和分组名称构建Key,若参数为空时则通过UUID来构建,从而确保该Key是唯一的。因此相同的任务名称和组名会覆盖之前的任务,这一点是需要注意的。
使用JobDetail+Job方式的设计,可以避免在并发情况下,对同一个实例的访问问题。
可以通过JobDataMap将数据存储并将数据传给Job实例。
Trigger
Trigger即为触发器,用于指定将以何种方式执行定时任务,注意Trigger与JobDetail一一对应,即一个触发器只做用于一个定义任务上。以下为两种常用的触发器:
CronTrigger
其核心在于使用Cron表达式进行任务的构建,如下是一个表示每月最后一天执行任务的Cron表达式:
# 每月的最后1天 0 0 L * * * 说明: Linux * * * * * - - - - - | | | | | | | | | +----- day of week (0 - 7) (Sunday=0

文章介绍了如何在SpringBoot项目中使用Quartz框架进行定时任务,包括销量统计和Redis服务的健康检测,以及如何配置CronTrigger和SimpleTrigger。同时讨论了环境配置、核心组件和注意事项。
最低0.47元/天 解锁文章
7479

被折叠的 条评论
为什么被折叠?



