需求:做个分配任务的功能模块,在任务截止前的十五分钟进行提醒(发送邮件、短信、系统提醒)。每隔五分钟提醒一次,直到任务完成!

想法:刚开始是想着是不是可以做个监听器,监听截止时间。当时间到了开始进行定时任务(尴尬,经验不足的臆测)。可不怎么好实现。。。。后来只能换个思路,

   做个定时器,每五分钟执行一次,查出所有的任务截止时间,与当前时间比较,到十五分钟了进行提醒。。。。。听着好low啊,要不停的查询数据库。先只能暂时这样做着了。。

撸码:

  1、pom文件:

    

    <dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>

2、需要建个job的java类,继承  QuartzJobBean

  

public class MissionInformJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
try {
getMissionInform();
} catch (Exception e) {
logger.error("MissionInformJob ExecuteInternal MessagingException:" + e);
}
} public void getMissionInform (){} }

在方法里写要定时执行代码;

3、配置文件

 <!-- 要调用的工作类 -->
<bean id="missionJob" class="com.ceair.bcc.message.job.MissionInformJob"></bean> <!-- 任务配置列表 -->
<bean id="missionTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="missionJob" />
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>getMissionInform</value>
</property>
<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
<property name="concurrent" value="true"/>
</bean> <!-- 触发器配置 时间指定 -->
<bean id="missionCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="messageTask"></property>
<!-- cron表达式 -->
<property name="cronExpression">
<!-- 每隔5分钟执行一次-->
<!--<value>0/30 * * * * ?</value>-->
<value>0 0/5 * * * ?</value>
</property>
</bean> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- 触发器列表 -->
<!--<ref bean="msgCronTrigger" />-->
<!--<ref bean="emailCronTrigger" />-->
<ref bean="excessCronTrigger"/>
<ref bean="missionCronTrigger"/>
</list>
</property>
</bean>

虽然这样就写完了 但是还有很多疑问,,因为在网上也查了资料,很遗憾没有找到自己要的答案。

疑问:1、网上有的大神说  继承了QuartzJobBean类 就不需要再配置文件了,,,

    2、org.springframework.scheduling.quartz.CronTriggerFactoryBean  和org.springframework.scheduling.quartz.SimpleTriggerBean的区别

    https://blog.csdn.net/ye_sheng/article/details/48132393  这篇里写:

      * 任务调度的触发时机来分,主要有以下两种:

      1.每隔指定时间则触发一次,对应的调度器为org.springframework.scheduling.quartz.SimpleTriggerBean

      2.每到指定时间则触发一次,对应的调度器为org.springframework.scheduling.quartz.CronTriggerBean

      注:这两种触发方式均可以跟两种作业继承方式相互组合来使用。

    https://blog.csdn.net/defonds/article/details/49496895  这里写:

      A:简单触发器,使用 SimpleTriggerFactoryBean
      你可以定义作业的启动时间、触发器之间的延迟时间以及 repeatInterval(频率)。

      

 <!-- Run the job every 2 seconds with initial delay of 1 second -->
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="simpleJobDetail" />
<property name="startDelay" value="1000" />
<property name="repeatInterval" value="2000" />

      B:计划触发器,使用 CronTriggerFactoryBean
      这种类型更加灵活,允许你针对特定实例选择计划方案以及将来要执行的频率。

 <!-- Run the job every 5 seconds -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="firstComplexJobDetail" />
<!--<property name="cronExpression" value="0/5 * * ? * SAT-SUN" />-->
<property name="cronExpression" value="0/5 * * ? * *" />

做下记录,后期再进行深究和修正。。。

Spring之定时器(QuartzJobBean)的实现的更多相关文章

  1. Spring任务调度定时器

    1.在spring-context.xml配置 <!-- 计划任务配置,用 @Service @Lazy(false)标注类,用@Scheduled(cron = "0 0 2 * * ...

  2. SSH框架中 Spring设置定时器 Quartz

    一,首先下载quartz-1.6.0.jar架包,到lib目录下 二,写你自己定时器业务方法 package com.lbnet.lzx.timing; import org.quartz.JobEx ...

  3. spring task定时器笔记

    定时器有两种方式 1.延迟启动 <bean id="timerTaskRunnerChain" class="bingo.uam.task.TimerTaskRun ...

  4. spring的定时器

    一:基于xml配置的方式 1:编写普通的pojo 类 package com.aflyun.web.task; import org.springframework.stereotype.Compon ...

  5. Spring注解定时器使用

    一.首先要配置我们的spring-service.xml 1.xmlns 多加下面的内容 xmlns:task="http://www.springframework.org/schema/ ...

  6. 项目总结08:spring quartz 定时器Demo

    将定时器用到的quartz.jar放在lip文件下 quartz.xml文件(完整) <?xml version="1.0" encoding="UTF-8&quo ...

  7. Spring设置定时器配置

    corn表达式生成:http://www.pppet.net/ 1.注解方式 添加命名空间 xmlns:task="http://www.springframework.org/schema ...

  8. 分享Spring Scheduled定时器的用法

    摘要:在coding中经常会用到定时器,指定每隔1个小时,或是每天凌晨2点执行一段代码段,若是使用java.util.Timer来做这种事情,未免重复造轮子.幸亏Spring中封装有定时器,而且非常好 ...

  9. spring task定时器的配置使用

    spring task的配置方式有两种:配置文件配置和注解配置. 1.配置文件配置 在applicationContext.xml中增加spring task的命名空间: xmlns:task=&qu ...

随机推荐

  1. centos7.4下离线安装CDH5.7

    (一)安装前的规划 (1)操作系统版本:centos7.4(64bit) [root@hadoop22 etc]# more /etc/centos-release CentOS Linux rele ...

  2. Linq 大合集

    static void Main(string[] args) { string[] words = { "zero", "one", "two&qu ...

  3. 集智robot微信公众号开发笔记

    开发流程 公众号基本配置(首先得有公众平台账号) 在开发菜单的基本配置中填写好基本配置项 首先配置服务器地址.Token.和消息加密密钥(地址为开发者为微信验证留的接口.token可以随便填写,只要在 ...

  4. ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)

    ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1) (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26 ...

  5. html标记语言 --格式标记

    html标记语言 --格式标记 一.格式标记 1.<br>单标记,强制换行标记,让后面的文字.图片.表格等显示在下一行 2.<p>换段落标记 3.<center>居 ...

  6. Spring(4)——面向切面编程(AOP模块)

    Spring AOP 简介 如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用. AOP 即 Aspect Orien ...

  7. 3分钟搞掂Set集合

    前言 声明,本文用的是jdk1.8 前面章节回顾: Collection总览 List集合就这么简单[源码剖析] Map集合.散列表.红黑树介绍 HashMap就是这么简单[源码剖析] LinkedH ...

  8. mysql索引类型和索引方法

    索引类型 mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号 ...

  9. .NET Core Community 首个千星项目诞生:CAP

    项目简介 在我们构建 SOA 或者 微服务系统的过程中,我们通常需要使用事件来对各个服务进行集成,在这过程中简单的使用消息队列并不能保证数据的最终一致性, CAP 采用的是和当前数据库集成的本地消息表 ...

  10. 机器学习技法:08 Adaptive Boosting

    Roadmap Motivation of Boosting Diversity by Re-weighting Adaptive Boosting Algorithm Adaptive Boosti ...