sue.spring.quartz.cron=*/5 * * * * ?
<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; @Configuration public 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; } }
The QuartzTestJob here is as follows, the method executeInternal Here are the tasks that need to be executed regularly.
public class QuartzTestJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { System.out.println("现在是"+ new Date()); } }
When the project is started, the output will be as follows according to the set frequency:
Of course, you can also start a scheduled task to query the return results of the three parties. When I was working on the risk control system for the car loan business, I requested data from three parties, actively requested it, and then polled the results with scheduled tasks.
Now it seems that the implementation using message queue is also very fast. Delayed message can just meet this business requirement. Request data and then put a delayed message into the message queue. When the time is up, request the result. If it doesn't work, put another delayed message in the message queue. The advantage of this compared to scheduled tasks is that it avoids CPU idling and improves performance.
The above is the detailed content of How to use quartz to implement scheduled tasks in Java. For more information, please follow other related articles on the PHP Chinese website!