日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ApiBoot - ApiBoot Quartz 使用文档

發布時間:2023/12/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ApiBoot - ApiBoot Quartz 使用文档 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ApiBoot Quartz

ApiBoot內部集成了Quartz,提供了數據庫方式、內存方式的進行任務的存儲,其中數據庫方式提供了分布式集群任務調度,任務自動平滑切換執行節點。

引用ApiBoot Quartz

在pom.xml配置文件內添加,如下配置:

<!--ApiBoot Quartz--> <dependency><groupId>org.minbox.framework</groupId><artifactId>api-boot-starter-quartz</artifactId> </dependency> 復制代碼

備注:如果使用ApiBoot Quartz的內存方式,僅需要添加上面的依賴即可。

相關配置

參數名稱是否必填默認值描述
api.boot.quartz.job-store-typememory任務存儲源方式,默認內存方式
api.boot.quartz.scheduler-namescheduler調度器名稱
api.boot.quartz.auto-startuptrue初始化后是否自動啟動調度程序
api.boot.quartz.startup-delay0初始化完成后啟動調度程序的延遲。
api.boot.quartz.wait-for-jobs-to-complete-on-shutdownfalse是否等待正在運行的作業在關閉時完成。
api.boot.quartz.overwrite-existing-jobsfalse配置的作業是否應覆蓋現有的作業定義。
api.boot.quartz.propertiesQuartz自定義的配置屬性,具體參考quartz配置
api.boot.quartz.jdbc配置數據庫方式的Jdbc相關配置

內存方式

ApiBoot Quartz在使用內存方式存儲任務時,不需要做配置調整。

數據庫方式

需要在application.yml配置文件內修改api.boot.quartz.job-store-type參數,如下所示:

api: boot: quartz:# Jdbc方式 job-store-type: jdbc 復制代碼

Quartz所需表結構

Quartz的數據庫方式內部通過DataSource獲取數據庫連接對象來進行操作數據,所操作數據表的表結構是固定的,ApiBoot把Quartz所支持的所有表結構都進行了整理,訪問Quartz支持數據庫建表語句列表查看,復制執行對應數據庫語句即可。

創建任務類

我們只需要讓新建類集成QuartzJobBean就可以完成創建一個任務類,如下簡單示例:

/*** 任務定義示例* 與Quartz使用方法一致,ApiBoot只是在原生基礎上進行擴展,不影響原生使用* <p>* 繼承QuartzJobBean抽象類后會在項目啟動時會自動加入Spring IOC** @author:恒宇少年 - 于起宇* <p>* DateTime:2019-03-28 17:26* Blog:http://blog.yuqiyu.com* WebSite:http://www.jianshu.com/u/092df3f77bca* Gitee:https://gitee.com/hengboy* GitHub:https://github.com/hengboy*/ public class DemoJob extends QuartzJobBean {/*** logger instance*/static Logger logger = LoggerFactory.getLogger(DemoJob.class);@Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {logger.info("定時任務Job Key : {}", context.getJobDetail().getKey());logger.info("定時任務執行時所攜帶的參數:{}", JSON.toJSONString(context.getJobDetail().getJobDataMap()));//...處理邏輯} } 復制代碼

任務參數

在任務執行時傳遞參數是必須的,ApiBoot Quartz提供了比較方便的傳遞方式,不過最終Quartz會把傳遞的值都會轉換為String類型數據。

任務Key默認值

ApiBoot Quartz的newJob方法所創建的定時任務,如果在不傳遞Job Key參數時,會默認使用UUID隨機字符串作為Job Key以及Trigger Key。

自定義任務開始時間

任務開始時間可以通過startAtTime方法進行設置,在不設置的情況下,任務創建完成后會立刻執行。

Cron 表達式任務

創建Cron類型任務如下所示:

String jobKey = apiBootQuartzService.newJob(ApiBootCronJobWrapper.Context().jobClass(DemoJob.class).cron("0/5 * * * * ?").param(ApiBootJobParamWrapper.wrapper().put("param", "測試")).wrapper()); 復制代碼

Cron 表達式任務由ApiBootCronJobWrapper類進行構建。

上面的DemoJob任務類將會每隔5秒執行一次。

Loop 重復任務

Loop循環任務,當在不傳遞重復執行次數時,不進行重復執行,僅僅執行一次,如下所示:

String jobKey = apiBootQuartzService.newJob(ApiBootLoopJobWrapper.Context()// 參數.param(ApiBootJobParamWrapper.wrapper().put("userName", "恒宇少年").put("userAge", 24))// 每次循環的間隔時間,單位:毫秒.loopIntervalTime(2000)// 循環次數.repeatTimes(5)// 開始時間,10秒后執行.startAtTime(new Date(System.currentTimeMillis() + 10000))// 任務類.jobClass(DemoJob.class).wrapper()); 復制代碼

Loop 任務由ApiBootLoopJobWrapper類進行構建。

上面的定時任務將會重復執行5次,連上自身執行的一次也就是會執行6次,每次的間隔時間為2秒,在任務創建10秒后進行執行。

Once 一次性任務

Once一次性任務,任務執行一次會就會被自動釋放,如下所示:

Map paramMap = new HashMap(1); paramMap.put("paramKey", "參數值");String jobKey = apiBootQuartzService.newJob(ApiBootOnceJobWrapper.Context().jobClass(DemoJob.class)// 參數.param(ApiBootJobParamWrapper.wrapper().put("mapJson", JSON.toJSONString(paramMap)))// 開始時間,2秒后執行.startAtTime(new Date(System.currentTimeMillis() + 2000)).wrapper() );復制代碼

Once 任務由ApiBootOnceJobWrapper類進行構建。

在參數傳遞時可以是對象、集合,不過需要進行轉換成字符串才可以進行使用。

暫停任務執行

任務在執行過程中可以進行暫停操作,通過ApiBoot Quartz提供的pauseJob方法就可以很簡單的實現,當然暫停時需要傳遞Job Key,Job Key可以從創建任務方法返回值獲得。

暫停任務如下所示:

// 暫停指定Job Key的任務 apiBootQuartzService.pauseJob(jobKey); // 暫停多個執行中任務 apiBootQuartzService.pauseJobs(jobKey,jobKey,jobKey); 復制代碼

恢復任務執行

任務執行完暫停后,如果想要恢復可以使用如下方式:

// 恢復指定Job Key的任務執行 apiBootQuartzService.resumeJob(jobKey); // 恢復多個暫停任務 apiBootQuartzService.resumeJobs(jobKey,jobKey,jobKey); 復制代碼

修改Cron表達式

修改Cron表達式的場景如下:

  • 已創建 & 未執行
  • 已創建 & 已執行

修改方法如下所示:

// 修改執行Job Key任務的Cron表達式 apiBootQuartzService.updateJobCron(jobKey, "0/5 * * * * ?"); 復制代碼

刪除任務

想要手動釋放任務時可以使用如下方式:

// 手動刪除指定Job Key任務 apiBootQuartzService.deleteJob(jobKey); // 手動刪除多個任務 apiBootQuartzService.deleteJobs(jobKey,jobKey,jobKey); 復制代碼

刪除任務的順序如下:

  • 暫停觸發器
  • 移除觸發器
  • 刪除任務 本章源碼地址:github.com/hengboy/api…
  • 轉載于:https://juejin.im/post/5ca57e756fb9a05e51235ec4

    總結

    以上是生活随笔為你收集整理的ApiBoot - ApiBoot Quartz 使用文档的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。