Home > Java > javaTutorial > body text

How to use quartz to implement scheduled tasks in Java

WBOY
Release: 2023-04-19 23:49:05
forward
1753 people have browsed it

Configuration file

sue.spring.quartz.cron=*/5 * * * * ?
Copy after login

pom

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

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;
    }
}
Copy after login

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());
    }
}
Copy after login

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!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!