,,Java使用quartz实现定时任务示例详解

,,Java使用quartz实现定时任务示例详解

本文主要介绍一个Java使用quartz实现定时任务的例子。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

目录

文本配置文件中pom定时任务和触发定时任务的业务代码

正文

最近新项目来了,用定时任务的地方真多。

我做了一点研究来做一个演示。

实际上,定时任务应用广泛且方便。对于之前的人事管理项目,会定期执行定时任务来计算工资。对于一个saas服务来说,马上计算所有员工的工资有点奢侈,所以每个周末计算一次是可以的。

有的外企一周发一次,所以当时的逻辑是一周算一次。在中国一个月一次是非常可以的。在当时的报表服务中,将数据同步到Birt服务,然后显示数据也是一项常规任务。

现在在更多的项目中使用。一些消耗性能、非实时的数据,可以在服务器负载不高的情况下,用定时任务进行计算。比如半夜计算商城用户的积分,半夜计算银行用户行为产生的积分。银行半夜计算罚息和复利。是定时任务的好例子。

下面举一个实现定时任务的例子。

配置文件

sue.spring.quartz.cron=*/5 * * * *?

pom

属国

groupIdorg.springframework.boot/groupId

artifactId spring-boot-starter-quartz/artifactId

/依赖关系

定时任务和触发器

包com . Luke . demo . schedule;

导入org . quartz . *;

导入org . spring framework . beans . factory . annotation . value;

导入org . spring framework . context . annotation . bean;

导入org . spring framework . context . annotation . configuration;

@配置

公共类QuartzConfig {

@ Value(' $ { sue . spring . quartz . cron } ')

私有字符串testCron

/**

*创建计划任务

*/

@Bean

public job detail quartzTestDetail(){

job detail job detail=job builder . new job(quartztestjob . class)

//添加身份验证信息。withIdentity('quartzTestDetail ',' QUARTZ_TEST ')。build();

返回作业详细信息;

}

/**

*创建触发器

*/

@Bean

公共触发器quartzTestJobTrigger() {

//执行频率

CronScheduleBuilder CronScheduleBuilder=CronScheduleBuilder . cron schedule(test cron);

//创建触发器

trigger trigger=trigger builder . new trigger()。forJob(quartzTestDetail())

//添加身份验证信息。with identity(' quartzTestJobTrigger ',' QUARTZ_TEST_JOB_TRIGGER ')

//添加执行规则。with schedule(cronScheduleBuilder)。build();

返回触发器;

}

}

定时任务的业务代码

这里的QuartzTestJob如下,需要定期执行的任务在方法executeInternal中。

公共类QuartzTestJob扩展QuartzJobBean {

@覆盖

受保护的void execute internal(JobExecutionContext上下文)引发JobExecutionException {

System.out.println('现在是' new Date());

}

}

项目启动时,将按照设定的频率输出如下:

当然,你也可以启动预定任务来查询三方的返回结果。你之前用车贷业务风控系统的时候,请求三方数据,主动请求然后调度任务轮询结果。

现在看来用消息队列实现也很快,延迟的消息正好可以满足这个业务需求。请求数据,然后将延迟的消息放入消息队列。时间到了,问结果。如果不好,将另一个延迟的消息放入消息队列。与调度任务相比,该方法具有避免CPU空闲和提高性能的优点。

以上是Java使用quartz实现定时任务的例子的详细内容。更多关于Java quartz实现定时任务的信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: