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

SpringBoot2.6.3集成quartz的方式

 更新時間:2022年02月18日 11:29:38   作者:諾淺  
quartz是java里頭定時任務的經(jīng)典開源實現(xiàn),這里講述一下如何在SpringBoot2.6.3集成quartz,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

quartz使用

quartz啟動需要數(shù)據(jù)庫有很多表的支持,這些表的建表腳本可以通過如下方式找到

如何找到quartz的數(shù)據(jù)庫腳本
在這里下載,需要注意的是下載2.2.3這個版本,不知道為什么高版本的反而沒有,真是佛了

集成Springboot

代碼
yml配置

spring:
  application:
    name: demo-excel
  datasource:
    url: jdbc:mysql://rm-xxx.mysql.rds.aliyuncs.com:3306/quartz_demo?zeroDateTimeBehavior=convertToNull
    password: quartz_demo
    username: quartz_demo
    driver-class-name: com.mysql.cj.jdbc.Driver
    name: datasource1
  quartz:
    # quartz任務存儲類型:jdbc或memory
    job-store-type: jdbc
    # 關閉時等待任務完成
    wait-for-jobs-to-complete-on-shutdown: true
    # 可以覆蓋已有的任務
    overwrite-existing-jobs: true
    properties:
      org:
        quartz:
          scheduler:
            # 調度器實例名稱
            instanceName: scheduler
            # 調度器實例ID自動生成
            instanceId: AUTO
          jobStore:
            class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            # quartz相關表前綴
            tablePrefix: QRTZ_
            useProperties: false
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            # 設置并發(fā)線程數(shù)量
            threadCount: 10
            # 指定線程優(yōu)先級
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
server:
  port: 8190
mybatis-plus:
  mapper-locations: classpath*:/mapperxml/*.xml

實現(xiàn)一個最簡單的任務,該任務輸出1111

@Component
public class TestJob extends QuartzJobBean {

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext)
            throws JobExecutionException {
        // 任務的具體邏輯
        System.out.println(1111);
    }
}

配置這個任務的執(zhí)行計劃

@Configuration
public class QuartzConfig {

    @Bean
    public JobDetail jobDetail() {
        JobDetail jobDetail = JobBuilder.newJob(TestJob.class)
                .withIdentity("test", "test")
                .storeDurably()
                .build();
        return jobDetail;
    }
    public Trigger trigger() {
        Trigger trigger = TriggerBuilder.newTrigger()
                .forJob(jobDetail())
                .startNow()
                .withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ?"))
        return trigger;
}

啟動任務會看到控制臺每秒鐘打印一次1111

進階

上訴任務是配置在代碼中,那么如果我們想把任務配置數(shù)據(jù)庫中,這樣我們就可以做一個定時任務的維護頁面,可以對定時任務的觸發(fā)規(guī)則修改,及修改刪除定時任務應該怎么做呢?

先定義一張存儲定時任務的表

-- auto-generated definition
create table sys_job
(
    id              bigint                  not null primary key,
    job_name        varchar(64)             not null comment '任務名稱',
    job_group       varchar(64)             not null comment '任務組名',
    method_name     varchar(500)            null comment '任務方法',
    method_params   varchar(50)             null comment '方法參數(shù)',
    cron_expression varchar(255)            null comment 'cron執(zhí)行表達式',
    misfire_policy  varchar(20) default '3' null comment '計劃執(zhí)行錯誤策略(1立即執(zhí)行 2執(zhí)行一次 3放棄執(zhí)行)',
    concurrent      char        default '1' null comment '是否并發(fā)執(zhí)行(0允許 1禁止)',
    status          char        default '0' null comment '狀態(tài)(0正常 1暫停)',
    create_by       varchar(64)             null comment '創(chuàng)建者',
    create_time     datetime                null comment '創(chuàng)建時間',
    update_by       varchar(64)             null comment '更新者',
    update_time     datetime                null comment '更新時間',
    remark          varchar(500)            null comment '備注信息'
)
    comment '定時任務調度表';

插入一條數(shù)據(jù)

INSERT INTO quartz_demo.sys_job (id, job_name, job_group, method_name, method_params, cron_expression, misfire_policy, concurrent, status, create_by, create_time, update_by, update_time, remark) VALUES (1, 'testJob2', 'test2', 'exec', null, '* * * * * ?', '2', '1', '0', null, null, null, null, null);

同時定義一張執(zhí)行結果記錄表

-- auto-generated definition
create table sys_job_log
(
    job_log_id     int auto_increment comment '任務日志ID'
        primary key,
    job_name       varchar(64)      not null comment '任務名稱',
    job_group      varchar(64)      not null comment '任務組名',
    method_name    varchar(500)     null comment '任務方法',
    method_params  varchar(50)      null comment '方法參數(shù)',
    job_message    varchar(500)     null comment '日志信息',
    status         char default '0' null comment '執(zhí)行狀態(tài)(0正常 1失?。?,
    exception_info varchar(2000)    null comment '異常信息',
    create_time    datetime         null comment '創(chuàng)建時間'
)
    comment '定時任務調度日志表';

項目啟動時讀取這張表里的數(shù)據(jù)放到quartz中執(zhí)行
由于代碼太多了,這邊就不列出來代碼了,demo已經(jīng)上傳到GitHub,項目基于springboot、mybatisplus。啟動加載任務的代碼在com.bxoon.service.impl.SysJobServiceImpl

到此這篇關于SpringBoot2.6.3集成quartz的文章就介紹到這了,更多相關SpringBoot集成quartz內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密

    Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密

    業(yè)務場景中經(jīng)常會遇到諸如用戶手機號,身份證號,銀行卡號,郵箱,地址,密碼等等信息,屬于敏感信息,本文就來介紹一下Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密,感興趣的可以了解一下
    2023-10-10
  • Kotlin中?StateFlow?或?SharedFlow?的區(qū)別解析

    Kotlin中?StateFlow?或?SharedFlow?的區(qū)別解析

    Kotlin協(xié)程中的StateFlow和SharedFlow是響應式數(shù)據(jù)流,分別用于UI狀態(tài)管理和事件通知,StateFlow有初始值,只保留最新值,適用于UI狀態(tài)管理;SharedFlow沒有初始值,可以配置緩存大小,適用于事件通知,感興趣的朋友一起看看吧
    2025-03-03
  • java并發(fā)無鎖多線程單線程示例詳解

    java并發(fā)無鎖多線程單線程示例詳解

    這篇文章主要為大家介紹了java并發(fā)無鎖多線程單線程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 使用Java第三方實現(xiàn)發(fā)送短信功能

    使用Java第三方實現(xiàn)發(fā)送短信功能

    這篇文章主要介紹了使用Java第三方實現(xiàn)發(fā)送短信功能,在一些開發(fā)中,經(jīng)常需要有給用戶發(fā)送短信接收驗證碼的功能,那么在Java中該如何實現(xiàn)呢,今天我們就一起來看一看
    2023-03-03
  • Mybatis逆工程的使用

    Mybatis逆工程的使用

    最近在學Mybatis,類似Hibernate,Mybatis也有逆工程可以直接生成代碼(mapping,xml,pojo),方便快速開發(fā)。這篇文章給大家介紹Mybatis逆工程的使用相關知識,感興趣的朋友一起看下吧
    2016-06-06
  • Java基礎第五篇 實施接口

    Java基礎第五篇 實施接口

    在public和private的封裝機制,我們實際上同時定義了類和接口,類和接口混合在一起。Java還提供了interface這一語法。這一語法將接口從類的具體定義中剝離出來,構成一個獨立的主體,下面文章內容將為大家做詳細介紹
    2021-09-09
  • 大廠面試常考:快速排序冒泡排序算法

    大廠面試???快速排序冒泡排序算法

    快速排序由于排序效率在同為O(N*logN)的幾種排序方法中效率較高,因此經(jīng)常被采用,再加上快速排序思想----分治法也確實實用,因此很多軟件公司的筆試面試,包括像BAT、字節(jié)、美團等知名IT公司都喜歡考查快速排序原理和手寫源碼
    2021-08-08
  • java 正則表達式獲取兩個字符中間的字符串方法

    java 正則表達式獲取兩個字符中間的字符串方法

    今天小編就為大家分享一篇java 正則表達式獲取兩個字符中間的字符串方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Mapper用于映射SQL語句,可以說是MyBatis操作數(shù)據(jù)庫的核心特性之一,這里我們來討論Java的MyBatis框架中Mapper映射配置的使用及原理解析,包括對mapper的xml配置文件的讀取流程解讀.
    2016-06-06
  • RocketMQ?Broker實現(xiàn)高可用高并發(fā)的消息中轉服務

    RocketMQ?Broker實現(xiàn)高可用高并發(fā)的消息中轉服務

    RocketMQ消息代理(Broker)是一種高可用、高并發(fā)的消息中轉服務,能夠接收并存儲生產(chǎn)者發(fā)送的消息,并將消息發(fā)送給消費者。它具有多種消息存儲模式和消息傳遞模式,支持水平擴展和故障轉移等特性,可以為分布式應用提供可靠的消息傳遞服務
    2023-04-04

最新評論

丰台区| 新晃| 咸阳市| 化州市| 赞皇县| 永修县| 广州市| 墨江| 明水县| 应用必备| 乃东县| 溆浦县| 临沧市| 白山市| 剑河县| 台安县| 天等县| 库伦旗| 自治县| 紫阳县| 太谷县| 衡水市| 太湖县| 彩票| 南华县| 安陆市| 云梦县| 灵丘县| 阜康市| 普定县| 淳化县| 平南县| 越西县| 金华市| 托克逊县| 固安县| 垦利县| 筠连县| 斗六市| 松阳县| 广饶县|