日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

java quartz spring_JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务

發(fā)布時(shí)間:2025/3/12 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java quartz spring_JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基于Spring Boot Quartz開發(fā)的JavaLib-quartz,目的是幫你快速構(gòu)建定時(shí)任務(wù)系統(tǒng),你可以專心編寫你的業(yè)務(wù)邏輯,而不必關(guān)注定時(shí)任務(wù)具體是如何實(shí)現(xiàn)的,他的性能如何,有沒有異常以及異常處理,監(jiān)控等等問題。這些你可以在文檔中得知。

快速使用

第1步、添加依賴

jitpack.io

https://jitpack.io

com.github.fengwenyi

JavaLib-quartz

1.0-gamma

第2步、HelloTask.java

package com.fengwenyi.example.javalib_quartz.start;

import com.fengwenyi.javalib.quartz.QuartzTask;

import org.springframework.stereotype.Component;

/**

* @author Wenyi Feng

*/

@Component

public class HelloTask extends QuartzTask {

}

第3步、HelloJob.java

package com.fengwenyi.example.javalib_quartz.start;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.springframework.scheduling.quartz.QuartzJobBean;

import java.util.Date;

/**

* @author Wenyi Feng

*/

public class HelloJob extends QuartzJobBean {

@Override

protected void executeInternal(JobExecutionContext context) throws JobExecutionException {

System.out.println("Hello : " + new Date());

}

}

第4步、HelloController.java

package com.fengwenyi.example.javalib_quartz.start;

import com.fengwenyi.javalib.quartz.ScheduleBean;

import com.fengwenyi.javalib.quartz.TimeTypeEnum;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**

* @author Wenyi Feng

*/

@RestController

@RequestMapping("/hello")

public class HelloController {

@Autowired

private Scheduler scheduler;

@Autowired

private HelloTask helloTask;

@RequestMapping("/job")

public boolean job() {

String jobName = "JOB";

String triggerName = "TRIGGER";

ScheduleBean scheduleBean = new ScheduleBean(scheduler, HelloJob.class, jobName, triggerName);

scheduleBean.setTimeType(TimeTypeEnum.AT_TIME);

scheduleBean.setAtTime(System.currentTimeMillis() + 1000 * 10); // 10s之后運(yùn)行

boolean rs = false;

try {

rs = helloTask.start(scheduleBean);

System.out.println("cTime : " + new Date());

} catch (SchedulerException e) {

e.printStackTrace();

}

return rs;

}

}

第5步、瀏覽器訪問

http://localhost:8080/hello/job

如果看到 true ,那就繼續(xù)下一步,否則就是出錯(cuò)了,需要去檢查錯(cuò)誤。

第6步、運(yùn)行效果

API

名稱

方法

參數(shù)

返回類型

說明

開啟定時(shí)任務(wù)

start

(ScheduleBean)

boolean

開啟是否成功,true:成功,false:失敗

定時(shí)任務(wù)當(dāng)前狀態(tài)

status

-

boolean

定時(shí)任務(wù)當(dāng)前狀態(tài),true:運(yùn)行中,false:已停止

停止定時(shí)任務(wù)

stop

-

boolean

定時(shí)任務(wù)停止是否成功,true:成功,false:失敗

ScheduleBean字段說明

名稱

參數(shù)

類型

說明

Scheduler

scheduler

Scheduler

Scheduler 對象

編號(hào)

id

Long

-,保留字段

名稱

name

String

-,保留字段

描述

description

String

-,保留字段

選用類型

timeTime

TimeTypeEnum

選用構(gòu)造Trigger對象類型

job類

clazz

Class extends Job>

定時(shí)任務(wù)執(zhí)行的job類

job參數(shù)

paramJobMap

Map

定時(shí)任務(wù)執(zhí)行的job類

job類

paramTriggerMap

Map

定時(shí)任務(wù)執(zhí)行的job類

cron表達(dá)式

cron

String

cron表達(dá)式

時(shí)間間隔

time

Integer

每隔一段時(shí)間執(zhí)行一次

時(shí)間間隔

atTime

Long

指定一個(gè)時(shí)間點(diǎn)執(zhí)行(毫秒數(shù))

Job名稱

jobName

String

Job名稱

Job組

jobGroup

String

Job組名稱

TriggerName

triggerName

String

Trigger名稱

Trigger組

triggerGroup

String

Trigger組名稱

TimeTypeEnum

字段說明

字段

類型

說明

code

Integer

代碼

msg

String

說明

值說明

名稱

代碼

說明

SIMPLE

1

簡單的定時(shí)任務(wù),每隔一段時(shí)間執(zhí)行一次

AT_TIME

2

指定一個(gè)時(shí)間點(diǎn)執(zhí)行(毫秒數(shù)[Long])

CRON

3

使用cron表達(dá)式(時(shí)間點(diǎn)、循環(huán)、自定義時(shí)間)

wiki

一、需要在Job中注入Service

使用 @Autowired 注解

@Autowired

private DBService dbService;

二、每隔一段時(shí)間執(zhí)行一次

int time;

ScheduleBean scheduleBean;

scheduleBean.setTimeType(TimeTypeEnum.SIMPLE);

scheduleBean.setTime(time);

三、指定一個(gè)時(shí)間點(diǎn)執(zhí)行一次

long atTime;

ScheduleBean scheduleBean;

scheduleBean.setTimeType(TimeTypeEnum.AT_TIME);

scheduleBean.setAtTime(atTime);

四、通過使用cron表達(dá)式執(zhí)行

String cron;

ScheduleBean scheduleBean;

scheduleBean.setTimeType(TimeTypeEnum.CRON);

scheduleBean.setCron(cron);

五、參數(shù)

// 將參數(shù)放到j(luò)ob中

Map jobMap;

ScheduleBean scheduleBean;

scheduleBean.setParamJobMap(jobMap);

// 將參數(shù)放到trigger中

Map triggerMap;

ScheduleBean scheduleBean;

scheduleBean.setParamTriggerMap(triggerMap);

六、關(guān)于在job獲取參數(shù)

兩種思路: 一是通過map的key獲取值, 二是通過構(gòu)造與map的key相同的屬性,提供set方法

// 獲取自己的參數(shù)

JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();

jobDataMap.getInt("");

jobDataMap.getString("");

jobDataMap.getFloat("");

jobDataMap.getDouble("");

JobDataMap triggerDataMap = context.getTrigger().getJobDataMap();

// 合并

// 如果job和trigger的key相同,trigger會(huì)覆蓋job的值

JobDataMap dataMap = context.getMergedJobDataMap();

七、在job中獲取jobDetail、trigger基礎(chǔ)信息

// 獲取jobDetail相關(guān)

JobKey jobKey = context.getJobDetail().getKey();

jobKey.getName();

jobKey.getGroup();

jobKey.getClass().getName();

// 獲取trigger相關(guān)

TriggerKey triggerKey = context.getTrigger().getKey();

triggerKey.getName();

triggerKey.getGroup();

八、task目前支持的方法

開啟任務(wù):start

查看當(dāng)前任務(wù)狀態(tài):status

停止任務(wù):stop

策略

1、優(yōu)先選用指定方式構(gòu)造Trigger

2、檢查順序:cron->atTime->simple,執(zhí)行順序:simple > atTime > cron 自下而上進(jìn)行覆蓋

資料

About Me

?author Wenyi Feng

Licensed

Copyright 2018 Wenyi Feng(xfsy_2015@163.com)

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

總結(jié)

以上是生活随笔為你收集整理的java quartz spring_JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。