首頁 > Java > java教程 > 主體

Java怎麼使用quartz實作定時任務

WBOY
發布: 2023-04-19 23:49:05
轉載
1751 人瀏覽過

設定檔

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;
@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;
    }
}
登入後複製

定時任務的業務代碼

這裡的QuartzTestJob如下,方法executeInternal裡就是需要定時執行的任務。

public class QuartzTestJob extends QuartzJobBean {
    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        System.out.println("现在是"+ new Date());
    }
}
登入後複製

當專案啟動起來之後,就會依照設定的頻率輸出如下:

Java怎麼使用quartz實作定時任務

#當然也可以啟動定時任務查詢三方的回傳結果,之前做車抵貸業務的風控系統的時候,請求了三方的數據,主動請求然後定時任務輪詢結果。

現在看來,用訊息佇列實作也是很每秒,延時訊息剛好可以滿足這個業務需求,請求資料然後向訊息佇列中放入一個延時訊息,時間到了,去請求結果,若是沒好,就再往訊息佇列放入延時訊息。這樣相對於定時任務的好處是,避免了CPU空轉,提升了效能。

以上是Java怎麼使用quartz實作定時任務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!