任務調度平臺XXL-JOB使用

分佈式任務調度平臺xxl-job是一個開源框架。GitHub上有詳細的源碼、文檔和demo,文檔地址是http://www.xuxueli.com/xxl-job/#/?id=%e4%b8%80%e3%80%81%e7%ae%80%e4%bb%8b。裏面有詳細的介紹。寫此博客爲了整理思路,鞏固加強。

1. 配置部署調度中心。

首先在gitHub上下載源代碼,是maven項目。執行tables_xxl_job.sql建表語句。文檔裏要求mysql5.6+。在mysql5.5也可以執行。需要先建數據庫,名字任意。在idea裏面啓動項目,用的tomcat是8.5.24。成功啓動項目。調度中心的配置內容參考文檔。注意裏面的數據庫名稱就是自己新建的數據庫名了。

2. 配置部署 執行器項目

執行器項目通常指 目前開發的項目。在項目中整合xxl-job任務調度框架,只需要引入一個maven包、配置一下參數和實現接口就可以。非常方便。這裏記錄一下和springboot的集成。引入
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>1.8.2</version>
</dependency>

2.1 application.yml的配置文件
yml配置文件加上配置。

xxl:
  job:
    admin:
      addresses: "@xxl.job.admin.addresses@"
    executor:
      appname: "@xxl.job.executor.appname@"
      ip: "@xxl.job.executor.ip@"
      port: "@xxl.job.executor.port@"
      logpath: "@xxl.job.executor.logpath@"
    accessToken: "@xxl.job.accessToken@"

其中的”@xxl.job.executor.appname@”等配置是在config_local.properties文件裏,參數具體意思參考文檔。通常yml裏是寫具體的參數值,這裏用這種方式是如何實現和config_local.properties文件對應的,是通過maven的prefile配置嗎?暫時不懂,還需去了解。

#xxl-job 調度中心工程的地址
xxl.job.admin.addresses=http://localhost:8999/xxl-job-admin

### xxl-job executor address
xxl.job.executor.appname=xxl-job-ots-server
xxl.job.executor.ip=
xxl.job.executor.port=9946

### xxl-job log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/

### xxl-job, access token
xxl.job.accessToken=

編寫XxlJobConfig類

package com.lancy.task;

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;

/**
 * xxl-job config
 * @author xuxueli 2017-04-28
 */
@Configuration
@ComponentScan(basePackages = "com.lancy.task")
//basePackages指向實現了接口IJobHandle的類所在包
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

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

    @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.executor.logpath}")
    private String logpath;

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

    @Bean(initMethod = "start", destroyMethod = "destroy")
    public XxlJobExecutor xxlJobExecutor() {
        logger.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
        xxlJobExecutor.setIp(ip);
        xxlJobExecutor.setPort(port);
        xxlJobExecutor.setAppName(appname);
        xxlJobExecutor.setAdminAddresses(addresses);
        xxlJobExecutor.setLogPath(logpath);
        xxlJobExecutor.setAccessToken(accessToken);
        return xxlJobExecutor;
    }

}

寫一個任務類,繼承IJobHandler。這個類需要在上面的XxlJobConfig裏配置的包下?

package com.lancy.task;

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

@Component
@JobHander(value="helloWorld")
//@Comonent 把類交給spring容器管理,必須
//@JobHander 唯一標識一個任務。調度中心會查找這個唯一的名稱來啓動執行此類的execute方法。
public class HelloWorld extends IJobHandler {
    @Override
    public ReturnT<String> execute(String... strings) throws Exception {
        System.out.println("你好呀");
        return ReturnT.SUCCESS;
    }
}

2.2 application.properties的配置文件
application.properties配置文件加上配置。

# xxl-job
xxl.job.admin.addresses=http://localhost:8999/xxl-job-admin

### xxl-job executor address
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=
xxl.job.executor.port=9998

### xxl-job log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/

### xxl-job, access token
xxl.job.accessToken=

然後編寫XxlJobConfig類、寫一個任務類,繼承IJobHandler,同上。到這裏就把springboot的配置講完了。源碼裏還有和spring整合的demo,也很簡單,可以參考。

3. 調度中心配置

  1. 添加執行器
    這裏寫圖片描述
  2. 任務管理添加任務
    這裏寫圖片描述

到此,整合xxl-job就完成了,非常方便實用。

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