Home  >  Article  >  Java  >  How to use quartz to implement scheduled tasks in Java

How to use quartz to implement scheduled tasks in Java

WBOY
WBOYforward
2023-04-19 23:49:051695browse

Configuration file

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

pom

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

Scheduled tasks and triggers

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;
    }
}

Business code of scheduled tasks

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:

How to use quartz to implement scheduled tasks in Java

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!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete