xl-job任務(wù)調(diào)度中心

xxl-job任務(wù)調(diào)度中心文檔

[TOC]

0.簡(jiǎn)介

官方文檔地址:分布式任務(wù)調(diào)度平臺(tái)XXL-JOB

??XXL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開放源代碼并接入多家公司線上產(chǎn)品線,開箱即用。
??本文只介紹xxl-job的簡(jiǎn)單使用

1.xxl-job管理端

1.1 配置

1.1.2 xxl-admin服務(wù)端

### 調(diào)度中心數(shù)據(jù)庫鏈接,xxl-job相關(guān)表存放的數(shù)據(jù)庫
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

### 報(bào)警郵箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

### 調(diào)度中心通訊TOKEN [選填]:非空時(shí)啟用;
xxl.job.accessToken=

### 調(diào)度中心國際化配置 [必填]: 默認(rèn)為 "zh_CN"/中文簡(jiǎn)體, 可選范圍為 "zh_CN"/中文簡(jiǎn)體, "zh_TC"/中文繁體 and "en"/英文;
xxl.job.i18n=zh_CN

## 調(diào)度線程池最大線程配置【必填】
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100

### 調(diào)度中心日志表數(shù)據(jù)保存天數(shù) [必填]:過期日志自動(dòng)清理;限制大于等于7時(shí)生效,否則, 如-1,關(guān)閉自動(dòng)清理功能;
xxl.job.logretentiondays=30

1.1.2 xxl-job客戶端

采用配置文件屬性值注入的方式

配置文件:application.yml
xxl:
  job:
    admin:
      addresses: http://localhost:8080/job-admin/  #job管理端地址,如果是集群模式通過nginx或者LB的VIP->domain 的訪問地址
    accessToken:   # 管理端的token,沒有則空
    executor:
      appname: xxl-job-executor-vending-test  #執(zhí)行器名稱,保證在管理端是唯一的
      ip:   #可空,讀取物理網(wǎng)卡第一個(gè)IP
      port: 9998  # 調(diào)度通道監(jiān)聽端口,建議都在9900~9999之間
      logpath: /home/mbApp/billbook/log/xxljob  # job執(zhí)行的日志目錄
      logretentiondays: -1   # 日志滾動(dòng)天數(shù)  -1 不限制
配置類:XxlJobConfig.class
@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;
    }

}

1.2 部署啟動(dòng)

xxl-job管理端地址:任務(wù)調(diào)度中心

可訪問代表啟動(dòng)成功

1.3 界面說明(演示xxl-job版本為2.0.2)

1.3.1 執(zhí)行器管理

??一個(gè)獨(dú)立的應(yīng)用綁定著一個(gè)執(zhí)行器,例如對(duì)賬項(xiàng)目綁定著對(duì)賬執(zhí)行器,項(xiàng)目啟動(dòng)后,可以在執(zhí)行器管理中的【OnLine 機(jī)器地址】這一列查看到綁定成功的ip+端口,顯示即表示在管理端注冊(cè)成功,至此啟動(dòng)的應(yīng)用可提供被管理端執(zhí)行相應(yīng)的job

執(zhí)行器需要進(jìn)行創(chuàng)建
執(zhí)行器檢測(cè)采用的是心跳檢測(cè),所以項(xiàng)目關(guān)閉時(shí)會(huì)有延遲

1.png

1.3.2 任務(wù)管理

??選擇相應(yīng)的執(zhí)行器,對(duì)賬項(xiàng)目中創(chuàng)建的job對(duì)應(yīng)這里的一個(gè)任務(wù)

@JobHandler(value="vendingJobHandler")
@Slf4j
@Component
public class VendingJobHandler extends IJobHandler {

    @Autowired
    private PmsVendingWarnService vendingWarnService;

    @Override
    public ReturnT<String> execute(String param) {
        XxlJobLogger.log("\n██【售貨機(jī)庫存預(yù)警記錄】: Start\n██ 參數(shù):{}",param);

        // 1.預(yù)警記錄
        vendingWarnService.vendingWarning();

        XxlJobLogger.log("\n██【售貨機(jī)庫存預(yù)警記錄】: End");
        return SUCCESS;
    }

}
3.png
4.png

cron:定義任務(wù)執(zhí)行的規(guī)律
JobHandler:對(duì)應(yīng)項(xiàng)目中創(chuàng)建的job類

1.3.3 日志管理

??在項(xiàng)目中穿插使用XxlJobLogger.log(..)來打日志(使用方式與Slfj相似),方便調(diào)試和檢查問題,在每個(gè)任務(wù)中可查看執(zhí)行日志
??PS:日志只支持字符串,日志展示的類需要使用該類的toString,例如XxlJobLogger.log("\n██【設(shè)備商品信息】\n██{}",pmsTermGoods.toString());

5.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容