亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot2.6.3集成quartz的方式

 更新時間:2022年02月18日 11:29:38   作者:諾淺  
quartz是java里頭定時任務(wù)的經(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任務(wù)存儲類型:jdbc或memory
    job-store-type: jdbc
    # 關(guān)閉時等待任務(wù)完成
    wait-for-jobs-to-complete-on-shutdown: true
    # 可以覆蓋已有的任務(wù)
    overwrite-existing-jobs: true
    properties:
      org:
        quartz:
          scheduler:
            # 調(diào)度器實例名稱
            instanceName: scheduler
            # 調(diào)度器實例ID自動生成
            instanceId: AUTO
          jobStore:
            class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            # quartz相關(guān)表前綴
            tablePrefix: QRTZ_
            useProperties: false
          threadPool:
            class: org.quartz.simpl.SimpleThreadPool
            # 設(shè)置并發(fā)線程數(shù)量
            threadCount: 10
            # 指定線程優(yōu)先級
            threadPriority: 5
            threadsInheritContextClassLoaderOfInitializingThread: true
server:
  port: 8190
mybatis-plus:
  mapper-locations: classpath*:/mapperxml/*.xml

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

@Component
public class TestJob extends QuartzJobBean {

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

配置這個任務(wù)的執(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;
}

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

進階

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

先定義一張存儲定時任務(wù)的表

-- auto-generated definition
create table sys_job
(
    id              bigint                  not null primary key,
    job_name        varchar(64)             not null comment '任務(wù)名稱',
    job_group       varchar(64)             not null comment '任務(wù)組名',
    method_name     varchar(500)            null comment '任務(wù)方法',
    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 '定時任務(wù)調(diào)度表';

插入一條數(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í)行結(jié)果記錄表

-- auto-generated definition
create table sys_job_log
(
    job_log_id     int auto_increment comment '任務(wù)日志ID'
        primary key,
    job_name       varchar(64)      not null comment '任務(wù)名稱',
    job_group      varchar(64)      not null comment '任務(wù)組名',
    method_name    varchar(500)     null comment '任務(wù)方法',
    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 '定時任務(wù)調(diào)度日志表';

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

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

相關(guān)文章

  • @FeignClient注解中屬性contextId的使用說明

    @FeignClient注解中屬性contextId的使用說明

    這篇文章主要介紹了@FeignClient注解中屬性contextId的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Spring Boot 整合 Druid過程解析

    Spring Boot 整合 Druid過程解析

    這篇文章主要介紹了Spring Boot 整合 Druid過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Java?Spring框架創(chuàng)建項目與Bean的存儲與讀取詳解

    Java?Spring框架創(chuàng)建項目與Bean的存儲與讀取詳解

    本篇文章將介紹Spring項目的創(chuàng)建,IDEA國內(nèi)源的配置以及Bean的存儲與讀取,所謂的Bean其實就是對象的意思,更詳細地說Spring Bean是被實例的,組裝的及被Spring 容器管理的Java對象
    2022-07-07
  • Mac配置 maven以及環(huán)境變量設(shè)置方式

    Mac配置 maven以及環(huán)境變量設(shè)置方式

    這篇文章主要介紹了Mac配置 maven以及環(huán)境變量設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 一個簡陋的java圖書管理系統(tǒng)

    一個簡陋的java圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了一個簡陋的java圖書管理系統(tǒng),簡單的實現(xiàn)功能測試,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • SpringDataRedis簡單使用示例代碼

    SpringDataRedis簡單使用示例代碼

    這篇文章主要介紹了SpringDataRedis簡單使用,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • Java多線程中停止線程遇到線程阻塞的處理方法詳解

    Java多線程中停止線程遇到線程阻塞的處理方法詳解

    這篇文章主要介紹了Java多線程中停止線程遇到線程阻塞的處理方法詳解,在阻塞狀態(tài)下,線程會釋放CPU資源,從而允許其他線程執(zhí)行,線程阻塞是實現(xiàn)多線程編程中重要的概念,可以提高程序的效率和資源利用率,需要的朋友可以參考下
    2023-10-10
  • Mybatis中傳遞多個參數(shù)的4種方法總結(jié)

    Mybatis中傳遞多個參數(shù)的4種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Mybatis中傳遞多個參數(shù)的4種方法,并且介紹了關(guān)于使用Mapper接口時參數(shù)傳遞方式,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2018-04-04
  • java中StringBuffer的length()和capacity()方法對比

    java中StringBuffer的length()和capacity()方法對比

    這篇文章主要介紹了java中StringBuffer的length()和capacity()方法對比,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot系列教程之dubbo和Zookeeper集成方法

    SpringBoot系列教程之dubbo和Zookeeper集成方法

    這篇文章主要介紹了SpringBoot系列教程之dubbo和Zookeeper集成方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09

最新評論