天天看點

springboot內建xxl-job完整版前言正文總結

前言

    最新開始研究xxl-job,之前搞過spring 內建的,現在來說下與springboot內建的,還是有些不一樣的。

正文

學習通道

    xxl-job 源碼和文檔位址:通路連結

部署排程中心

初始化資料庫腳本

     在github(https://github.com/xuxueli/xxl-job)下載下傳xxl-job 的源碼 ,用idea打開後項目目錄結構如下圖所示:

springboot內建xxl-job完整版前言正文總結

    在db檔案夾下找到*.sql的腳本檔案,在本地資料庫(因為我把定時器放在本地)執行腳本,建立xxl-job的資料庫,如下圖(截圖中為可視化mysql資料的工具 Navicat):

springboot內建xxl-job完整版前言正文總結

配置排程中心

     找到xxl-job xxl-job-admin 工程下的屬性檔案,修改資料庫配置為剛剛配置的本地資料源:主要修改url,username,password,如下圖:

springboot內建xxl-job完整版前言正文總結

     提示:這塊兒還可以配置報警郵箱,當定時任務執行出現問題了,郵箱的主人會第一時間收到它的通知;

部署排程中心

     部署排程中心(xxl-job-admin),通路排程中心的管理控制頁面:可以直接在idea 中啟動程式,也可以将程式打包(maven package),用 “java -jar jar包名稱 -d”等背景啟動排程中心;

     啟動成功後,根據日志提示資訊(http://localhost:8080/xxl-job-admin)通路管理頁面:賬号 admin | 預設初始密碼 123456

springboot內建xxl-job完整版前言正文總結

     登入成功,顯示頁面(備注:下方截圖是本地已經配置好的排程中心及定時任務)

springboot內建xxl-job完整版前言正文總結

建立執行器

     因本地工程是springboot的,是以建立一個Springboot版本的執行器;

導入maven 依賴

<dependency>
			<groupId>com.xuxueli</groupId>
			<artifactId>xxl-job-core</artifactId>
			<version>2.1.1-SNAPSHOT</version>
</dependency>
           

配置yml檔案或屬性檔案 (此處以yml檔案為例)

xxl:
  job:
    admin:
      # 位址為剛剛配置的排程中心的通路位址 
      addresses: http://127.0.0.1:8080/xxl-job-admin
    executor:
      # 自定義appName(執行器名稱)
      appname: xxl-job-appName
      # ip 可以寫 (程式跑在的機器ip上),也可以不寫
      ip:
      port: 9999
      # 執行器日志檔案存儲路徑
      logpath: /data/applogs/xxl-job/jobhandler
      # 設定日志過期時間  -1表示永不過期 
      logretentiondays: -1
      accessToken:

           

編寫配置檔案,讀取yml檔案剛剛配置的屬性

package com.cxqz.nlp.config;

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * xxl-job config
 *
 * @author xuxueli 2017-04-28
 */
@Configuration
public class XxlJobConfig {

    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @Value("${xxl.job.executor.appname}")
    private String appName;

    @Value("${xxl.job.executor.ip}")
    private String ip;

    @Value("${xxl.job.executor.port}")
    private int port;

    @Value("${xxl.job.accessToken}")
    private String accessToken;

    @Value("${xxl.job.executor.logpath}")
    private String logPath;

    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;

    @Bean(initMethod = "start", destroyMethod = "destroy")
    public XxlJobSpringExecutor xxlJobExecutor() {
        logger.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppName(appName);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobSpringExecutor;
    }
}

           

編寫任務

(任務可以了解為想要定時任務執行的東西,這裡我調用的是使用者等級更新接口)

@JobHandler(value = "testJobHandler")
@Component
public class TestHandler extends IJobHandler {
    @Autowired
    private UserService userService;
    
    @Override
    public ReturnT<String> execute(String param) throws Exception {
        XxlJobLogger.log(" >>使用者等級更新任務開始執行....");
        try {
            //自定義調用接口
            userService.updateLevel();
            return SUCCESS;
        } catch (Exception e) {
            XxlJobLogger.log(e);
            return FAIL;
        }
    }
}

           

啟動執行器

    啟動Springboot 程式,以便排程中心可以找到執行器;

建立執行器

    在調用中心中建立執行器

    打開管理頁面,到【執行器管理】中建立執行器,如下圖:

springboot內建xxl-job完整版前言正文總結

    填寫執行器資訊,如下圖:

springboot內建xxl-job完整版前言正文總結

    設定 【自動注冊】後的執行器位址:

springboot內建xxl-job完整版前言正文總結

新增任務

    新增任務,打開【任務管理】,選擇剛添加的【測試執行器】,選擇【新增】,如下圖:

springboot內建xxl-job完整版前言正文總結

    添加任務資訊,綁定程式中寫的JobHandler,如下圖:

springboot內建xxl-job完整版前言正文總結

執行(啟動)任務,檢視執行情況

現在可以啟動任務了,找到剛添加的任務,選擇【執行一次】或【啟動】,這裡我選擇了【執行一次】:

springboot內建xxl-job完整版前言正文總結

    想要檢視執行情況,選擇上圖中的【查詢日志】,将會看到“排程備注”和“執行日志”;

springboot內建xxl-job完整版前言正文總結

    排程備注 詳情:

springboot內建xxl-job完整版前言正文總結

    執行日志 詳情:

springboot內建xxl-job完整版前言正文總結

    這樣,利用定時任務架構執行任務就成功了~

總結

     Springboot 內建 xxl-job 完整版教程到此結束,更多内容請移步到xxl-job官網 或者下方留言 也行啊,大概一年前在公司分享過xxl-job,時間過的真快~

     PS: 剛剛發現【XXL社群】還有很多項目,相當的厲害鴨!

繼續閱讀