本文主要介绍一个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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。