配置文件sue.spring.quartz.cron=*/5 * * * * ?
pom<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-quartz</artifactid></dependency>
定时任务和触发器package com.luke.demo.schedule;import org.quartz.*;import org.springframework.beans.factory.annotation.value;import org.springframework.context.annotation.bean;import org.springframework.context.annotation.configuration;@configurationpublic class quartzconfig { @value("${sue.spring.quartz.cron}") private string testcron; /** * 创建定时任务 */ @bean public jobdetail quartztestdetail() { jobdetail jobdetail = jobbuilder.newjob(quartztestjob.class) //添加认证信息 .withidentity("quartztestdetail", "quartz_test") .build(); return jobdetail; } /** * 创建触发器 */ @bean public trigger quartztestjobtrigger() { //执行频率 cronschedulebuilder cronschedulebuilder = cronschedulebuilder.cronschedule(testcron); //创建触发器 trigger trigger = triggerbuilder.newtrigger() .forjob(quartztestdetail()) //添加认证信息 .withidentity("quartztestjobtrigger", "quartz_test_job_trigger") //添加执行规则 .withschedule(cronschedulebuilder) .build(); return trigger; }}
定时任务的业务代码这里的quartztestjob如下,方法executeinternal里就是需要定时执行的任务。
public class quartztestjob extends quartzjobbean { @override protected void executeinternal(jobexecutioncontext context) throws jobexecutionexception { system.out.println("现在是"+ new date()); }}
当项目启动起来之后,就会按照设定的频率输出如下:
当然也可以启动定时任务查询三方的返回结果,之前做车抵贷业务的风控系统的时候,请求了三方的数据,主动请求然后定时任务轮询结果。
现在看来,用消息队列实现也是很每秒,延时消息刚好可以满足这个业务需求,请求数据然后向消息队列中放入一个延时消息,时间到了,去请求结果,若是没好,就再往消息队列中放入一个延时消息。这样相对于定时任务的好处是,避免了cpu空转,提升了性能。
以上就是java怎么使用quartz实现定时任务的详细内容。