当前位置: 首页 > wzjs >正文

四会市城乡规划建设局网站沙田网站建设

四会市城乡规划建设局网站,沙田网站建设,文安网站建设,有没有做卡商的网站介绍 Quartz 是一个功能强大的开源作业调度库,广泛应用于 Java 程序中,用于执行定时任务。Quartz 提供了灵活的调度方式,支持按时间、间隔、cron 表达式等方式配置任务。 Quartz 定时任务的基本概念 Job:一个任务类,…

介绍

Quartz 是一个功能强大的开源作业调度库,广泛应用于 Java 程序中,用于执行定时任务。Quartz 提供了灵活的调度方式,支持按时间、间隔、cron 表达式等方式配置任务。

Quartz 定时任务的基本概念
Job:一个任务类,执行实际的操作。
JobDetail:封装了 Job 类,定义任务的细节和其他参数。
Trigger:触发任务执行的条件,可以是简单触发器(SimpleTrigger)或者 Cron 表达式触发器(CronTrigger)。
Scheduler:调度器,用于管理 Job 和 Trigger,执行调度任务。

Quartz 不仅支持单机的任务调度,还支持多线程和分布式任务调度。可以通过配置集群模式来确保任务的可靠执行,并防止多个节点重复执行相同的任务。

依赖

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version><relativePath/>
</parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

需求

平台有会员制功能,会员快到期前7天给用户下发短信提醒改用户会员即将到期,如用户充值了一个月那可以在充值时创建定时任务,到时间下方即可。

JobDetail(定义任务的细节和其他参数)

//封装了 Job 类,定义任务的细节和其他参数。
@Bean
public JobDetail jobDetail(){return JobBuilder.newJob(SMSBelow.class)//执行任务的类.storeDurably() //任务持久化(需要配合数据库).withIdentity("13888888","sms")//任务的 任务名 和 任务组 (起到标识作用).usingJobData("time","2025-4-7") //数据初始值(共享) 在execute可以获取改参数 例:会员到期.build();
}

Trigger(触发任务执行的条件)

//触发任务执行的条件,可以是简单触发器(SimpleTrigger)或者 Cron 表达式触发器(CronTrigger)。
@Bean
public Trigger trigger(){return TriggerBuilder.newTrigger().withIdentity("expire:13888888","member") //触发器的 任务名 和 任务组 (起到标识作用).forJob(jobDetail()) //触发(到时间)执行哪个任务//三秒执行一次.withSchedule(CronScheduleBuilder.cronSchedule("*/3 * * * * ?")) //具体执行的时间 cro表达式.build();
}

cron表达式表达

  • *(星号):表示该字段匹配所有的可能值。比如 * 在分钟字段中表示“每分钟”。
  • */x:表示“每 x 个单位”。例如 */5 在分钟字段中表示“每 5 分钟执行一次”。
  • ,(逗号):表示多个值的列表。比如 1,5,10 表示“在 1 号、5 号和 10 号执行”。
  • -(连字符):表示范围。比如 1-5 表示“从 1 到 5”这个范围内的每个值。
  • ?(问号):表示不指定具体值。仅能在“日”和“周”字段中使用。它的作用是避免与其它字段冲突。例如,? 可以表示“任意日期或任意星期几”,你不需要指定一个具体的值。
  • L:表示“最后”一个。例如,L 在“日”字段中表示“这个月的最后一天”。在“周”字段中,L 表示“这个月的最后一个星期几”。
  • W:表示“离指定日期最近的工作日”。例如,15W 表示“最近的工作日(周一至周五)与 15 号接近”。
  • #:表示“第几个星期几”。例如,6#3 表示“每月的第三个星期五”。

表达式在线生成:https://www.bejson.com/othertools/cron/

封装成配置类

配置类

@Configuration
public class QuartzConfig {//封装了 Job 类,定义任务的细节和其他参数。@Beanpublic JobDetail jobDetail(){return JobBuilder.newJob(SMSBelow.class)//执行任务的类.storeDurably() //任务持久化(需要配合数据库).withIdentity("13888888","sms")//任务的 任务名 和 任务组 (起到标识作用).usingJobData("time","2025-4-7") //数据初始值(共享) 在execute可以获取改参数 例:会员到期.build();}//触发任务执行的条件,可以是简单触发器(SimpleTrigger)或者 Cron 表达式触发器(CronTrigger)。@Beanpublic Trigger trigger(){return TriggerBuilder.newTrigger().withIdentity("expire:13888888","member") //触发器的 任务名 和 任务组 (起到标识作用).forJob(jobDetail()) //触发(到时间)执行哪个任务.withSchedule(CronScheduleBuilder.cronSchedule("*/3 * * * * ?")) //具体执行的时间 cro表达式.build();}}

Job任务类(执行实际的操作)

/*** 短信下发任务类*/
public class SMSBelow implements Job {//执行任务@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {//jobExecutionContext 定时任务执行的上下文 可以拿到当前执行任务的参数//获取JobDetail参数JobDetail jobDetail =jobExecutionContext.getJobDetail();System.out.println("任务名称:"+jobDetail.getKey().getName());//sms:13888888System.out.println("任务分组:"+jobDetail.getKey().getGroup());//smsSystem.out.println("任务执行类:"+jobDetail.getJobClass().getName());//SMSBelow//获取任务执行的时间 (执行时间不是当前时间)System.out.println("执行时间:"+jobExecutionContext.getFireTime());System.out.println("下次执行时间:"+jobExecutionContext.getNextFireTime());//获取传递的值JobDataMap jobDataMap =jobDetail.getJobDataMap();//.usingJobData("time","2025-4-7")String time =(String) jobDataMap.get("time"); //2025-4-7//还可以对垓数据进行修改//jobDataMap.put("time","2026-5-8");System.out.println(time);/**** 短信下发的逻辑*/System.out.println("任务已完成");}
}

打印输出

任务名称:sms:13888888
任务分组:sms
任务执行类:com.quartz.task.SMSBelow
执行时间:Mon Apr 07 16:51:39 CST 2025
下次执行时间:Mon Apr 07 16:51:42 CST 2025
2025-4-7
任务已完成

数据共享(上一次运行的数据)

@PersistJobDataAfterExecution 是 Quartz 框架中的一个注解,用于控制 Quartz 任务在执行完成后是否将 Job 的数据状态持久化。具体来说,这个注解作用于 Quartz 的 Job 类,用来确保 Job 在执行过程中修改过的 JobDataMap 会在执行完成后自动持久化回数据库或其他持久化存储中。这样就每次按照上一次任务来执行而不是又开启一个新的任务。

@PersistJobDataAfterExecution
public class SMSBelow implements Job {//执行任务@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {........}
}

禁止并发访问(超过运行时间)

@DisallowConcurrentExecution
任务每三秒执行一次,而每个任务执行一次就需要五秒,这时就会产生并发导致数据和目标效果不一致数据错乱。
Quartz 会确保该作业的多个执行实例不会并发运行。如果作业的第一个实例正在执行,后续触发的同一个作业不会开始执行,直到第一个实例执行完成。这对于防止同一个作业在不同线程或不同调度周期中并发执行造成的冲突或资源争用非常有用。

@DisallowConcurrentExecution
public class SMSBelow implements Job {//执行任务@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {........}
}

文章转载自:

http://d1s07dCy.hxfrd.cn
http://97bIEyOi.hxfrd.cn
http://3r9xOFW4.hxfrd.cn
http://qo8ZMbbo.hxfrd.cn
http://HS79bjd4.hxfrd.cn
http://zUNWnEzc.hxfrd.cn
http://tY6DH8AH.hxfrd.cn
http://8BTX5bnD.hxfrd.cn
http://U0wuOIQ0.hxfrd.cn
http://ytFp3zJR.hxfrd.cn
http://0aUpJwM0.hxfrd.cn
http://jaRoUhdf.hxfrd.cn
http://Xary0QKC.hxfrd.cn
http://FRCymDaT.hxfrd.cn
http://0mbzW8bS.hxfrd.cn
http://cTQPlxyT.hxfrd.cn
http://5zkJ2MTH.hxfrd.cn
http://FjMdkCeD.hxfrd.cn
http://9aJxcjfP.hxfrd.cn
http://q86tTwG3.hxfrd.cn
http://tyYgL4bf.hxfrd.cn
http://uKRIcQaM.hxfrd.cn
http://I9IbD0dw.hxfrd.cn
http://t8ALC27d.hxfrd.cn
http://DxSneVU3.hxfrd.cn
http://AtLOvrnQ.hxfrd.cn
http://JXTgXmOX.hxfrd.cn
http://Sj4sUDhW.hxfrd.cn
http://Ll2MuWQX.hxfrd.cn
http://uviEolqF.hxfrd.cn
http://www.dtcms.com/wzjs/641699.html

相关文章:

  • 白云网站(建设信科网络)塘厦镇
  • 欧米伽官方网站手表价格企业网站优化的弊端
  • 网站建设以及推广提案书吴江区经济开发区规建设局网站
  • 营销推广型网站公司可以做音乐mv视频网站
  • 怎么键卖东西的网站wordpress中国最好主题
  • 公司做网站设计要注意网站开发工具 知乎
  • 如何在百度上做公司网站朝阳网站建设 高碑店
  • wordpress插件怎么破解网站seo 优化
  • 企业形象通用网站用路由器做简单的网站
  • 摄影网站的需求分析个人网站 外贸
  • 【转】网页 网站 html如何实现"关闭窗口"代码大全博物馆 网站 建设
  • 建设网站需要的配置为网站制定一个推广计划
  • 科技网站域名百度 wordpress react
  • 如何制作一个注册网站中企动力全球邮企业邮箱
  • 营销型企业网站建设步骤网站建站是模版好还是设计好
  • 显示网站建设中建筑设计方案网站
  • 写作网站哪个能得稿费少女免费观看完整电视电影
  • 好的html5网站模板中英语双语网站咋做
  • 哪个网站做课件ppt比较好wordpress 地图菜单
  • 网站如何吸引人品牌推广的目的和意义
  • 小型门户网站建设硬件配置南京一等一网络科技有限公司
  • c语言网络编程网站优化与seo的区别
  • 安徽合肥建设局网站做百度竞价用什么网站
  • 爱网站最新发布址动态电商网站怎么做
  • 培训机构一般在什么网站做推广网站统计系统
  • 搭建网站手机软件WordPress主题get
  • 查竣工验收报告的网站html5网页设计作业免费
  • 惠州个人做网站联系人网站网页建设论文
  • 化妆品商城网站建设郑州做网站九零后
  • 怎么发现网站漏洞而做软件网站手机页面如何做