spring boot 整合xxl-job任務調度框架

以前使用的是azakan服務調度,但是其比較笨重,且爲何不方便。。。

故改爲xxl-job執行任務調度。。

xxl的調度只需要添加配置項:

添加maven配置

        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core-beta</artifactId>
            <version>1.9.2</version>
        </dependency>
package com.trs.idap.config;

import com.xxl.job.core.executor.XxlJobExecutor;
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.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "com.trs.idap.service.jobhandler")
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 XxlJobExecutor xxlJobExecutor() {
        logger.info("<<-----------------初始化分佈式調度服務----------------->>");
        XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
        xxlJobExecutor.setAdminAddresses(adminAddresses);
        xxlJobExecutor.setAppName(appName);
        xxlJobExecutor.setIp(ip);
        xxlJobExecutor.setPort(port);
        xxlJobExecutor.setAccessToken(accessToken);
        xxlJobExecutor.setLogPath(logPath);
        xxlJobExecutor.setLogRetentionDays(-1);
        return xxlJobExecutor;
    }
}

 

配置文件爲:

xxl:
    job:
        admin:
            ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
            addresses: http://localhost:8080/xxl-job-admin
        ### xxl-job executor address
        executor:
            appname: ca-service-executor
            ip:
            port: 9999
            ### xxl-job log path
            logpath: /data/applogs/jobService/jobhandler
            ### xxl-job log retention days
            logretentiondays: -1
        ### xxl-job, access token
        accessToken:

注意配置的addresses:是xxl-job服務端的地址。

executor是執行器要執行的參數。。

appname命名要與服務端註冊的時候一致;

port:一定是未使用的port,即運行xxl的任務時需要用到該port。。。其他的沒多大的意義了。。

 

看一下。。。部署在tomcat中的xxl-job-admin。。默認使用的時tomcat的8080端口。。

 

默認的用戶名和密碼直接進入了。。這是我配置好的頁面。。。

1,首先要配置執行器管理。。。

此時AppName就是我們在代碼中生命的名稱,不能變。。。。

名稱是便於自己理解的,見名知意就好。

排序,順序1,2,3就好。。。隨便寫

註冊方式,選擇自動註冊就好。

自動註冊時機器名稱可以不寫。。保存。。。

2,此時要維護任務管理

任務管理中,選擇你剛添加的執行器,此時任務列表是,空的。。因爲你沒有添加任務。。。

此時我們先回到代碼中,因爲代碼中,我們只是配置了xxl-job管理,並沒有寫真正的任務。。。

此時一定要在config中配置的@ComponentScan(basePackages = "com.trs.idap.service.jobhandler")包下,才能被scan到。。

package com.trs.idap.service.jobhandler;

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import org.springframework.stereotype.Component;

/**
 * @創建人:Young
 * @時 間: 2019/4/13
 * @描 述: TODO
 */
@JobHandler(value = "test")
@Component
public class TestService extends IJobHandler {
    @Override
    public ReturnT<String> execute(String s)  {
        try {
            System.out.println("獲取到的參數是:"+s);
            System.out.println("//todo 我執行test任務了。。。。");
            return ReturnT.SUCCESS;
        }catch (Exception e){
            System.out.println(e.getMessage());
            return ReturnT.FAIL;
        }
    }
}

此時的任務名稱是jobHandler是test。。

回到xxl-job-admin,的任務管理中,選擇執行器,然後選擇新增任務。

任務描述:自己對任務的描述;

cron:是執行任務的cron時間表達式;

Jobhandler:是在我們代碼中定義的jobHandler。

任務參數可選:就是傳遞到代碼中param的一部分。

點擊保存。

啓動項目後,你會發現註冊成功的日誌。。

執行器中也發現了,註冊成功ip和端口號。

此時可以手動點擊執行,或者等到配置的cron時間到時執行。。

控制檯日誌:

將傳入的參數整理爲json即是:

頁面的執行狀態:

 

此時一組調用就成功。。。

 

其他要寫的業務就在java代碼中寫。。。

 

//todo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章