最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Quartz高可用定時任務(wù)快速入門

 更新時間:2022年04月03日 10:27:25   作者:Java知識圖譜  
如果你想做定時任務(wù),有高可用方面的需求,或者僅僅想入門快,上手簡單,那么選用它準沒錯,感興趣的小伙伴們可以參考一下

定時任務(wù)使用指南

如果你想做定時任務(wù),有高可用方面的需求,或者僅僅想入門快,上手簡單,那么選用它準沒錯。

定時任務(wù)模塊是對Quartz框架進一步封裝,使用更加簡潔。

1、引入依賴

<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-quartz</artifactId>
    <version>1.5.4.1</version>
</dependency>

2、快速上手

實現(xiàn)org.quartz.Job接口;使用注解CronExp添加任務(wù)的調(diào)度策略;使用注解Component將任務(wù)注入容器中。

啟動項目,定時任務(wù)便處于監(jiān)聽與運行中。

@Component
@DisallowConcurrentExecution
@CronExp(cron = "0/5 * * * * ?")
public class DemoJob implements Job {
    @Override
    public void execute(JobExecutionContext context) {
        System.out.println("任務(wù)1:" + LocalDateTime.now());
    }
}

3、手動觸發(fā)定時任務(wù)

定時任務(wù)除了以既有頻率周期性運行外,還有通過接口手動被觸發(fā)的能力。

調(diào)用如下接口,可手動觸發(fā)任務(wù)ID編號為jobId的任務(wù)。

http://localhost:8080/cms-api/quartz/job/{jobId}

如果有手動觸發(fā)定時任務(wù)的需求,則需要任務(wù)ID唯一并已知,因此需要在編寫定時任務(wù)時手動指定。

@CronExp(id = 1, cron = "0/5 * * * * ?")

通過注解CronExp的id屬性可指定任務(wù)ID,不顯示指定則使用隨機ID,不滿足已知的條件,因此無法手動觸發(fā)。

4、帶參數(shù)任務(wù)

盡管大多數(shù)任務(wù)不需要注入?yún)?shù),但仍有少量的場景需要向定時任務(wù)注入?yún)?shù)。

public void execute(JobExecutionContext context) {
    /* 如果在調(diào)用任務(wù)時傳入了參數(shù),則能夠從Map中獲取 */
    Map<String, Object> dataMap = context.getMergedJobDataMap();
    /* 比如從Map中獲取一個鍵值對,一般來說參數(shù)均為基本數(shù)據(jù)類型 */
    Object key = dataMap.get("key");
    System.out.println("任務(wù)2:" + LocalDateTime.now() + ": " + key);
}

在編寫定時任務(wù)時,可從JobExecutionContext對象中解析一個Map,從而完成參數(shù)的注入。

http://localhost:8080/cms-api/quartz/job/1?key=a

上述http調(diào)用的含義是手動觸發(fā)任務(wù)ID為【1】的任務(wù),并且向其傳遞參數(shù)為【key】值為【a】的參數(shù)。

5、任務(wù)并發(fā)

本框架不支持任務(wù)并發(fā),換句話說并發(fā)對定時任務(wù)不利,因此需要手動禁止。

需要注意的是Quartz的并發(fā)是指當任務(wù)執(zhí)行耗時超過任務(wù)調(diào)度周期時,上一個任務(wù)未執(zhí)行完,新任務(wù)是否執(zhí)行。

一般來說需要顯示禁止并發(fā),在任務(wù)類上添加注解DisallowConcurrentExecution即可禁止任務(wù)并發(fā)。

6、持久化

如果定時任務(wù)有高可用的需求,那么需要對任務(wù)進行持久化。定時任務(wù)數(shù)據(jù)持久化到數(shù)據(jù)庫中后,支持應(yīng)用程序多開。定時任務(wù)持久化多節(jié)點部署后,集群中單節(jié)點故障不影響定時任務(wù)的執(zhí)行。

定時任務(wù)持久化,僅需修改yml文件配置即可達到目標,無需修改代碼。一般而言使用Mysql做持久化的容器。

spring:
  quartz:
    properties:
      org.quartz.jobStore.isClustered: true
      org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX
      org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
      org.quartz.jobStore.dataSource: qzDS
      org.quartz.dataSource.qzDS.driver: com.mysql.cj.jdbc.Driver
      org.quartz.dataSource.qzDS.URL: jdbc:mysql://localhost:3306/quartz-demo
      org.quartz.dataSource.qzDS.user: root
      org.quartz.dataSource.qzDS.password: 123456

除了修改主機、端口、數(shù)據(jù)庫名、用戶名、密碼五個參數(shù)外,其余參數(shù)使用默認值即可。

配置完數(shù)據(jù)庫連接后,使用SQL腳本,注意初始化數(shù)據(jù)庫

到此這篇關(guān)于Java中Quartz高可用定時任務(wù)快速入門的文章就介紹到這了,更多相關(guān)Java Quartz定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Hibernate中使用HQLQuery查詢?nèi)繑?shù)據(jù)和部分數(shù)據(jù)的方法實例

    Hibernate中使用HQLQuery查詢?nèi)繑?shù)據(jù)和部分數(shù)據(jù)的方法實例

    今天小編就為大家分享一篇關(guān)于Hibernate中使用HQLQuery查詢?nèi)繑?shù)據(jù)和部分數(shù)據(jù)的方法實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MyBatis關(guān)聯(lián)查詢的實現(xiàn)

    MyBatis關(guān)聯(lián)查詢的實現(xiàn)

    MyBatis可以通過定義多個表的關(guān)聯(lián)關(guān)系,實現(xiàn)多表查詢,本文主要介紹了MyBatis關(guān)聯(lián)查詢的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Jpa 實現(xiàn)自動更新表中的創(chuàng)建日期和修改時間

    Jpa 實現(xiàn)自動更新表中的創(chuàng)建日期和修改時間

    這篇文章主要介紹了Jpa 實現(xiàn)自動更新表中的創(chuàng)建日期和修改時間,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 四種Java線程池用法解析

    四種Java線程池用法解析

    這篇文章主要為大家解析四種Java線程池用法,內(nèi)容詳細,分析細致,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Java中websocket消息推送的實現(xiàn)代碼

    Java中websocket消息推送的實現(xiàn)代碼

    這篇文章主要介紹了Java中websocket消息推送的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • JAVA構(gòu)造器是否為靜態(tài)方法你知道嗎

    JAVA構(gòu)造器是否為靜態(tài)方法你知道嗎

    這篇文章主要為大家詳細介紹了JAVA構(gòu)造器是否為靜態(tài)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • springboot之SpringApplication生命周期和事件機制解讀

    springboot之SpringApplication生命周期和事件機制解讀

    這篇文章主要介紹了springboot之SpringApplication生命周期和事件機制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java二叉樹的四種遍歷方式詳解

    Java二叉樹的四種遍歷方式詳解

    這篇文章主要介紹了Java二叉樹的四種遍歷,二叉樹的遍歷可以分為前序、中序、后序、層次遍歷,需要的朋友可以參考下
    2021-11-11
  • Java enum實現(xiàn)自增賦值方式

    Java enum實現(xiàn)自增賦值方式

    這篇文章主要介紹了Java enum實現(xiàn)自增賦值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Springboot深入講解nocos的整合與使用

    Springboot深入講解nocos的整合與使用

    Nacos?是阿里巴巴推出來的一個新開源項目,這是一個更易于構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺,在項目開發(fā)過程中,我們經(jīng)常使用nacos作為配置中心和注冊中心。本文章我們就從代碼層面研究下springboot是如何整合nacos使用的
    2022-07-07

最新評論

隆回县| 京山县| 柳江县| 蛟河市| 浮山县| 肇庆市| 都昌县| 南部县| 新宾| 清新县| 三穗县| 文山县| 唐山市| 来凤县| 红河县| 遂平县| 松溪县| 嘉义市| 西华县| 长阳| 大关县| 渝中区| 灵台县| 镇江市| 闵行区| 浮山县| 霸州市| 汕头市| 澎湖县| 临澧县| 汉川市| 华阴市| 淮北市| 宣武区| 塘沽区| 陈巴尔虎旗| 广安市| 崇信县| 澄江县| 聂拉木县| 英山县|