成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ApiBoot - ApiBoot Quartz 使用文檔

CocoaChina / 2612人閱讀

摘要:重復(fù)任務(wù)循環(huán)任務(wù),當(dāng)在不傳遞重復(fù)執(zhí)行次數(shù)時,不進(jìn)行重復(fù)執(zhí)行,僅僅執(zhí)行一次,如下所示參數(shù)恒宇少年每次循環(huán)的間隔時間,單位毫秒循環(huán)次數(shù)開始時間,秒后執(zhí)行任務(wù)類任務(wù)由類進(jìn)行構(gòu)建。

ApiBoot Quartz

ApiBoot內(nèi)部集成了Quartz,提供了數(shù)據(jù)庫方式、內(nèi)存方式的進(jìn)行任務(wù)的存儲,其中數(shù)據(jù)庫方式提供了分布式集群任務(wù)調(diào)度,任務(wù)自動平滑切換執(zhí)行節(jié)點。

引用ApiBoot Quartz

pom.xml配置文件內(nèi)添加,如下配置:



  org.minbox.framework
  api-boot-starter-quartz
備注:如果使用ApiBoot Quartz的內(nèi)存方式,僅需要添加上面的依賴即可。
相關(guān)配置
參數(shù)名稱 是否必填 默認(rèn)值 描述
api.boot.quartz.job-store-type memory 任務(wù)存儲源方式,默認(rèn)內(nèi)存方式
api.boot.quartz.scheduler-name scheduler 調(diào)度器名稱
api.boot.quartz.auto-startup true 初始化后是否自動啟動調(diào)度程序
api.boot.quartz.startup-delay 0 初始化完成后啟動調(diào)度程序的延遲。
api.boot.quartz.wait-for-jobs-to-complete-on-shutdown false 是否等待正在運(yùn)行的作業(yè)在關(guān)閉時完成。
api.boot.quartz.overwrite-existing-jobs false 配置的作業(yè)是否應(yīng)覆蓋現(xiàn)有的作業(yè)定義。
api.boot.quartz.properties Quartz自定義的配置屬性,具體參考quartz配置
api.boot.quartz.jdbc 配置數(shù)據(jù)庫方式的Jdbc相關(guān)配置
內(nèi)存方式

ApiBoot Quartz在使用內(nèi)存方式存儲任務(wù)時,不需要做配置調(diào)整。

數(shù)據(jù)庫方式

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

api:
  boot:
    quartz:
      # Jdbc方式
      job-store-type: jdbc
Quartz所需表結(jié)構(gòu)

Quartz的數(shù)據(jù)庫方式內(nèi)部通過DataSource獲取數(shù)據(jù)庫連接對象來進(jìn)行操作數(shù)據(jù),所操作數(shù)據(jù)表的表結(jié)構(gòu)是固定的,ApiBootQuartz所支持的所有表結(jié)構(gòu)都進(jìn)行了整理,訪問Quartz支持?jǐn)?shù)據(jù)庫建表語句列表查看,復(fù)制執(zhí)行對應(yīng)數(shù)據(jù)庫語句即可。

創(chuàng)建任務(wù)類

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

/**
 * 任務(wù)定義示例
 * 與Quartz使用方法一致,ApiBoot只是在原生基礎(chǔ)上進(jìn)行擴(kuò)展,不影響原生使用
 * 

* 繼承QuartzJobBean抽象類后會在項目啟動時會自動加入Spring IOC * * @author:恒宇少年 - 于起宇 *

* 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); @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { logger.info("定時任務(wù)Job Key : {}", context.getJobDetail().getKey()); logger.info("定時任務(wù)執(zhí)行時所攜帶的參數(shù):{}", JSON.toJSONString(context.getJobDetail().getJobDataMap())); //...處理邏輯 } }

任務(wù)參數(shù)

在任務(wù)執(zhí)行時傳遞參數(shù)是必須的,ApiBoot Quartz提供了比較方便的傳遞方式,不過最終Quartz會把傳遞的值都會轉(zhuǎn)換為String類型數(shù)據(jù)。

任務(wù)Key默認(rèn)值

ApiBoot QuartznewJob方法所創(chuàng)建的定時任務(wù),如果在不傳遞Job Key參數(shù)時,會默認(rèn)使用UUID隨機(jī)字符串作為Job Key以及Trigger Key。

自定義任務(wù)開始時間

任務(wù)開始時間可以通過startAtTime方法進(jìn)行設(shè)置,在不設(shè)置的情況下,任務(wù)創(chuàng)建完成后會立刻執(zhí)行。

Cron 表達(dá)式任務(wù)

創(chuàng)建Cron類型任務(wù)如下所示:

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

Cron 表達(dá)式任務(wù)由ApiBootCronJobWrapper類進(jìn)行構(gòu)建。

上面的DemoJob任務(wù)類將會每隔5秒執(zhí)行一次。

Loop 重復(fù)任務(wù)

Loop循環(huán)任務(wù),當(dāng)在不傳遞重復(fù)執(zhí)行次數(shù)時,不進(jìn)行重復(fù)執(zhí)行,僅僅執(zhí)行一次,如下所示:

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

Loop 任務(wù)由ApiBootLoopJobWrapper類進(jìn)行構(gòu)建。

上面的定時任務(wù)將會重復(fù)執(zhí)行5次,連上自身執(zhí)行的一次也就是會執(zhí)行6次,每次的間隔時間為2秒,在任務(wù)創(chuàng)建10秒后進(jìn)行執(zhí)行。

Once 一次性任務(wù)

Once一次性任務(wù),任務(wù)執(zhí)行一次會就會被自動釋放,如下所示:

Map paramMap = new HashMap(1);
paramMap.put("paramKey", "參數(shù)值");

String jobKey = apiBootQuartzService.newJob(
  ApiBootOnceJobWrapper.Context()
  .jobClass(DemoJob.class)
  // 參數(shù)
  .param(
    ApiBootJobParamWrapper.wrapper()
    .put("mapJson", JSON.toJSONString(paramMap))
  )
  // 開始時間,2秒后執(zhí)行
  .startAtTime(new Date(System.currentTimeMillis() + 2000))
  .wrapper()
);

Once 任務(wù)由ApiBootOnceJobWrapper類進(jìn)行構(gòu)建。

在參數(shù)傳遞時可以是對象、集合,不過需要進(jìn)行轉(zhuǎn)換成字符串才可以進(jìn)行使用。

暫停任務(wù)執(zhí)行

任務(wù)在執(zhí)行過程中可以進(jìn)行暫停操作,通過ApiBoot Quartz提供的pauseJob方法就可以很簡單的實現(xiàn),當(dāng)然暫停時需要傳遞Job Key,Job Key可以從創(chuàng)建任務(wù)方法返回值獲得。

暫停任務(wù)如下所示:

// 暫停指定Job Key的任務(wù)
apiBootQuartzService.pauseJob(jobKey);
// 暫停多個執(zhí)行中任務(wù)
apiBootQuartzService.pauseJobs(jobKey,jobKey,jobKey);
恢復(fù)任務(wù)執(zhí)行

任務(wù)執(zhí)行完暫停后,如果想要恢復(fù)可以使用如下方式:

// 恢復(fù)指定Job Key的任務(wù)執(zhí)行
apiBootQuartzService.resumeJob(jobKey);
// 恢復(fù)多個暫停任務(wù)
apiBootQuartzService.resumeJobs(jobKey,jobKey,jobKey);
修改Cron表達(dá)式

修改Cron表達(dá)式的場景如下:

已創(chuàng)建 & 未執(zhí)行

已創(chuàng)建 & 已執(zhí)行

修改方法如下所示:

// 修改執(zhí)行Job Key任務(wù)的Cron表達(dá)式
apiBootQuartzService.updateJobCron(jobKey, "0/5 * * * * ?");
刪除任務(wù)

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

// 手動刪除指定Job Key任務(wù)
apiBootQuartzService.deleteJob(jobKey);
// 手動刪除多個任務(wù)
apiBootQuartzService.deleteJobs(jobKey,jobKey,jobKey);

刪除任務(wù)的順序如下:

暫停觸發(fā)器

移除觸發(fā)器

刪除任務(wù)

本章源碼地址:https://github.com/hengboy/api-boot/tree/master/api-boot-samples/api-boot-sample-quartz

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74058.html

相關(guān)文章

  • ApiBoot - ApiBoot Swagger 使用文檔

    摘要:相關(guān)配置配置參數(shù)參數(shù)介紹默認(rèn)值是否啟用文檔標(biāo)題快速集成文檔文檔描述通過自動化配置快速集成文檔,僅需一個注解一個依賴即可。注意通過所獲取的類型都為。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動化完成配置,讓接口開發(fā)者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大...

    yuanxin 評論0 收藏0
  • ApiBoot - ApiBoot Security Oauth 依賴使用文檔

    摘要:如果全部使用默認(rèn)值的情況話不需要做任何配置方式前提項目需要添加數(shù)據(jù)源依賴。獲取通過獲取啟用在使用格式化時非常簡單的,配置如下所示開啟轉(zhuǎn)換轉(zhuǎn)換時所需加密,默認(rèn)為恒宇少年于起宇默認(rèn)不啟用,簽名建議進(jìn)行更換。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動化完成配置,讓接口開發(fā)者可以選著性完成開箱即...

    Tonny 評論0 收藏0
  • ApiBoot - ApiBoot Alibaba Sms 使用文檔

    摘要:的短信服務(wù)模塊是由阿里云的國際短信服務(wù)提供的,支持國內(nèi)和國際快速發(fā)送驗證碼短信通知和推廣短信。前提需要到阿里云控制臺申請開通短信服務(wù)。如果在阿里云控制臺定義的短信模板存在多個參數(shù),可以通過方法來進(jìn)行挨個添加,該方法返回值為本對象。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動化完成配置,讓接...

    cheng10 評論0 收藏0
  • ApiBoot - ApiBoot Http Converter 使用文檔

    摘要:如下所示不配置默認(rèn)使用自定義是的概念,用于自定義轉(zhuǎn)換實現(xiàn),比如自定義格式化日期自動截取小數(shù)點等。下面提供一個的簡單示例,具體的使用請參考官方文檔。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動化完成配置,讓接口開發(fā)者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大...

    dance 評論0 收藏0
  • ApiBoot - ApiBoot Alibaba Oss 使用文檔

    摘要:添加快速集成的對象存儲服務(wù),提供常用的文件操作方法,當(dāng)然也提供自定義擴(kuò)展,以致于滿足絕大數(shù)業(yè)務(wù)場景,并且通過擴(kuò)展可以實現(xiàn)上傳文件進(jìn)度條下載文件進(jìn)度條存儲空間操作靜態(tài)網(wǎng)站托管訪問日志防盜鏈分片上傳追加上傳斷點續(xù)傳等等。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動化完成配置,讓接口開發(fā)者可以選...

    fengxiuping 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<