xxl-job调度中心及执行器的安装及使用

1,367次阅读
没有评论

由于安装的是最新版,所以需要以下环境:

Maven3+
Jdk1.8+
Mysql5.7+

Maven 用于 xxl-job 等源码的构建打包,所以可以在本地构建,(例:IDEA、eclipse)

调度中心的安装(xxl-job-admin)

初始化“调度数据库”

请下载项目源码并解压,获取“调度数据库初始化 SQL 脚本”并执行即可。

“调度数据库初始化 SQL 脚本”位置为:

/xxl-job/doc/db/tables_xxl_job.sql

调度中心支持集群部署,集群情况下各节点务必连接同一个 mysql 实例;

如果 mysql 做主从, 调度中心集群节点务必强制走主库;

配置部署

调度中心项目:xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。

调度中心配置:

调度中心配置文件地址:

/xxl-job/xxl-job-admin/src/main/resources/application.properties

调度中心配置内容说明:

### 调度中心 JDBC 链接:链接地址请保持和 2.1 章节 所创建的调度数据库的地址一致
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
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
### 调度中心通讯 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

源码编译

解压源码, 按照 maven 格式将源码导入 IDE, 使用 maven 进行编译即可,源码结构如下:

xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器 Sample 示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
:xxl-job-executor-sample-springboot:Springboot 版本,通过 Springboot 管理执行器,推荐这种方式;
:xxl-job-executor-sample-frameless:无框架版本;

编译说明:

  1. IDE 安装 maven3+ 插件
  2. 构建需要在 (root) 根目录下点击运行 package 构建,此处点击生成的是 xxl-job-admin 项目的所有 jar 包
  3. xxl-job-admin/target/xxl-job-admin-2.3.1-SNAPSHOT.jar 上传到服务器
  4. 运行命令 nohup java -jar xxl-job-admin-2.3.1-SNAPSHOT.jar & 启动

Docker 安装部署

下载镜像

// Docker 地址:https://hub.docker.com/r/xuxueli/xxl-job-admin/     (建议指定版本号)
docker pull xuxueli/xxl-job-admin:2.3.0

创建容器并运行

docker run -p 8080:8080 \
-e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.138.72:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \
--spring.datasource.username=root \
--spring.datasource.password=Aa123456" \
-v /tmp:/data/applogs \
--name xxl-job-admin  -d xuxueli/xxl-job-admin:2.3.0
/**
* 如需自定义 mysql 等配置,可通过 "-e PARAMS" 指定,参数格式 PARAMS="--key=value  --key2=value2";* 配置项参考文件:/xxl-job/xxl-job-admin/src/main/resources/application.properties
* 如需自定义 JVM 内存参数 等配置,可通过 "-e JAVA_OPTS" 指定,参数格式 JAVA_OPTS="-Xmx512m";*/

部署项目

如果已经正确进行上述配置,可将项目编译打包部署。

调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)

默认登录账号“admin/123456”, 登录后运行界面如下图所示。

配置部署 “ 执行器 ”

“执行器”项目:xxl-job-executor-sample-springboot (提供多种版本执行器供选择,现以 springboot 版本为例,可直接使用,也可以参考其并将现有项目改造成执行器)
作用:负责接收“调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。

执行器配置

执行器配置,配置文件地址:

/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties

执行器配置,配置内容说明:

### 调度中心部署跟地址 [ 选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行 "执行器心跳注册" 和 "任务结果回调";为空则关闭自动注册;xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### 执行器通讯 TOKEN [ 选填]:非空时启用;xxl.job.accessToken=
### 执行器 AppName [ 选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-sample
### 执行器注册 [ 选填]:优先使用该配置作为注册地址,为空时使用内嵌服务”IP:PORT“作为注册地址。从而更灵活的支持容器类型执行器动态 IP 和动态映射端口问题。xxl.job.executor.address=
### 执行器 IP [ 选填]:默认为空表示自动获取 IP,多网卡时可手动设置指定 IP,该 IP 不会绑定 Host 仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";xxl.job.executor.ip=
### 执行器端口号 [ 选填]:小于等于 0 则自动获取;默认端口为 9999,单机部署多个执行器时,注意要配置不同执行器端口;xxl.job.executor.port=9999
### 执行器运行日志文件存储磁盘路径 [ 选填]:需要对该路径拥有读写权限;为空则使用默认路径;xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### 执行器日志文件保存天数 [ 选填]:过期日志自动清理, 限制值大于等于 3 时生效; 否则, 如 -1, 关闭自动清理功能;xxl.job.executor.logretentiondays=30

执行器组件配置

执行器组件,配置文件地址:

/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java

执行器组件,配置内容说明:

@Bean
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;
}

部署执行器项目

如果已经正确进行上述部署,可将执行器项目编译打部署
注:构建需要在 (root) 根目录下点击运行 package 构建,此处点击生成的是 xxl-job-admin 项目的所有 jar 包

xxl-job-executor-samples\xxl-job-executor-sample-springboot\target 下的 xxl-job-executor-sample-springboot-2.3.1-SNAPSHOT.jar 上传

运行命令nohup java -jar xxl-job-executor-sample-springboot-2.3.1-SNAPSHOT.jar &

登陆任务调度中心 –> 执行器管理 –> 新增

说明:
AppName 为执行器组件的 appname
可自动注册或手动录入

任务管理使用

选择执行器,并新增任务

重点说明 Jobhandler, 此处的 handler 对应代码中需要传的参数

 1、任务开发:在 Spring Bean 实例中,开发 Job 方法;2、注解配置:为 Job 方法添加注解 "@XxlJob(value=" 自定义 jobhandler 名称 ", init ="JobHandler 初始化方法 ", destroy ="JobHandler 销毁方法 ")",注解 value 值对应的是调度中心新建任务的 JobHandler 属性的值。3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志;4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果;
正文完