xl-job任务调度中心

xxl-job任务调度中心文档

[TOC]

0.简介

官方文档地址:分布式任务调度平台XXL-JOB

  XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
  本文只介绍xxl-job的简单使用

1.xxl-job管理端

1.1 配置

1.1.2 xxl-admin服务端

### 调度中心数据库链接,xxl-job相关表存放的数据库
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

### 报警邮箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
[email protected]
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

### 调度中心通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=

### 调度中心国际化配置 [必填]: 默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;
xxl.job.i18n=zh_CN

## 调度线程池最大线程配置【必填】
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100

### 调度中心日志表数据保存天数 [必填]:过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能;
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  #执行器名称,保证在管理端是唯一的
      ip:   #可空,读取物理网卡第一个IP
      port: 9998  # 调度通道监听端口,建议都在9900~9999之间
      logpath: /home/mbApp/billbook/log/xxljob  # job执行的日志目录
      logretentiondays: -1   # 日志滚动天数  -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 部署启动

xxl-job管理端地址:任务调度中心

可访问代表启动成功

1.3 界面说明(演示xxl-job版本为2.0.2)

1.3.1 执行器管理

  一个独立的应用绑定着一个执行器,例如对账项目绑定着对账执行器,项目启动后,可以在执行器管理中的【OnLine 机器地址】这一列查看到绑定成功的ip+端口,显示即表示在管理端注册成功,至此启动的应用可提供被管理端执行相应的job

执行器需要进行创建
执行器检测采用的是心跳检测,所以项目关闭时会有延迟

1.png

1.3.2 任务管理

  选择相应的执行器,对账项目中创建的job对应这里的一个任务

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

    @Autowired
    private PmsVendingWarnService vendingWarnService;

    @Override
    public ReturnT execute(String param) {
        XxlJobLogger.log("\n██【售货机库存预警记录】: Start\n██ 参数:{}",param);

        // 1.预警记录
        vendingWarnService.vendingWarning();

        XxlJobLogger.log("\n██【售货机库存预警记录】: End");
        return SUCCESS;
    }

}
3.png
4.png

cron:定义任务执行的规律
JobHandler:对应项目中创建的job类

1.3.3 日志管理

  在项目中穿插使用XxlJobLogger.log(..)来打日志(使用方式与Slfj相似),方便调试和检查问题,在每个任务中可查看执行日志
  PS:日志只支持字符串,日志展示的类需要使用该类的toString,例如XxlJobLogger.log("\n██【设备商品信息】\n██{}",pmsTermGoods.toString());

5.png

你可能感兴趣的:(xl-job任务调度中心)