# xxl-job-plus
**Repository Path**: justin1001/xxl-job-plus
## Basic Information
- **Project Name**: xxl-job-plus
- **Description**: xxl-job-plus是xxl-job的增强包,提供对接注册中心能力,支持nacos,springboot,spring cloud,支持监测注册中心xxl-job-admin服务上下线,executor服务上下线,实现executor向xxl-job-admin自动启动、刷新、停止,完美兼容xxl-job-admin
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 22
- **Created**: 2023-06-13
- **Last Updated**: 2023-06-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# xxl-job-plus
**开源不易,麻烦给个star,让更多的朋友使用起来,大家一起用,我才能知道代码的不足,才能添加新的features**
## 特别鸣谢
**[许雪里/xxl-job](https://www.xuxueli.com/xxl-job/)**
## 前言
项目从分布式升级为微服务后,针对服务运行状态的管控就显得尤为重要。spring cloud中的注册中心,不管是nacos
还是eureka都可以监测和管理服务上下线的状态。有时候可能临时需要再上新服务节点,这时候再去挨个修改现有服务的调用ip配置就显得不合时宜了。xxl-job作为一款分布式定时任务组件,极大的方便了各服务模块的任务管理,但是使用之前,必须配置好xxl-job-admin的地址列表,同时如果我们在注册中心临时下线了某个服务,这个时候xxl-job-admin的执行器列表中这个服务还是在线状态,管理就不是很统一。为了解决这种配置问题和服务上下线问题,xxl-job-plus应运而生,更好的服务于springcloud服务运维。
## 介绍
xxl-job-plus是xxl-job的增强包,在不对xxl-job-core源码修改的情况下,提供对接注册中心能力。支持监测注册中心xxl-job-admin服务上下线,executor服务上下线,实现executor向xxl-job-admin自动启动、刷新、停止,完美兼容xxl-job-admin。同时不再需要为executor单独配置ip和port(ip和port为注册中心中注册的ip和port,原有netty端口监听不再使用,改用spring-web
controller 实现),也不需要配置admin地址(动态从注册中心拉取)。也无需配置XxlJobExecutor,由本包自动注册。现已支持nacos注册中心,eureka将在下个版本推出。
## 软件架构

Xxl-job-plus采用接口扩展和动态反射技术,对原有xxl-job-core配置做修改和注入,对xxl-job-core版本依赖性强,建议使用对应的版本
## 环境要求
jdk 1.8+
nacos-discovery-spring-boot-starter:0.2.8+ | spring-cloud-starter-alibaba-nacos-discovery:2.2.5.RELEASE +
xxl-job-core:2.3.1+
## 下载
```
com.justtoplay
xxl-job-plus
${对应的xxl-job-core版本}
```
## 快速入门
### 服务端xxl-job-admin
#### 方式一:原工程构建
此部分除nacos接入外,其它步骤均以xxl-job的文档为准
1. 下载xxl-job源码: http://gitee.com/xuxueli0323/xxl-job
2. 刷数据库: /xxl-job/doc/db/tables_xxl_job.sql
3. xxl-job-admin工程pom添加引入,nacos-client版本请匹配nacos server版本
```
com.alibaba.boot
nacos-discovery-spring-boot-starter
${版本号}
```
4. 修改 xxl-job-admin 工程的application.properties配置文件
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=123456
```
2. 添加注册中心相关配置
```
spring.application.name=xxl-job-admin
nacos.discovery.server-addr=127.0.0.1:8848
nacos.discovery.register.ip=127.0.0.1
nacos.discovery.register.port=${server.port}
nacos.discovery.namespace=
nacos.discovery.auto-register=true
```
5. 修改xxl-job-admin 工程的logback文件
```
```
6. 启动工程
7. 查看注册中心服务列表中是否注册成功
8. 访问调度中心
* http://localhost:8080/xxl-job-admin
* 用户名/密码 :admin/123456
#### 方式二:docker镜像
1. 下载镜像(建议指定版本号)
```
docker pull justtoplay/xxl-job-admin:{指定版本}
```
2. 创建容器并运行
```
docker run -e PARAMS="--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 --spring.application.name=xxl-job-admin --nacos.discovery.server-addr=127.0.0.1:8848 --nacos.discovery.register.ip=127.0.0.1 --nacos.discovery.register.port=8080 --nacos.discovery.namespace= --nacos.discovery.auto-register=true" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d justtoplay/xxl-job-admin:{指定版本}
```
3. 查看是否注册成功,能否正常访问调度中心
### 执行器端
1. 业务工程引入pom依赖
```
com.xuxueli
xxl-job-core
${xxl-job-core版本号}
com.justtoplay
xxl-job-plus
${xxl-job-core版本号}
org.springframework.boot
spring-boot-starter-web
```
2. 引入nacos-discovery
* spring boot 工程
1. 修改pom
```
com.alibaba.boot
nacos-discovery-spring-boot-starter
${和nacos server匹配的client版本号}
```
2. 修改 业务工程的application.properties配置文件
```
spring.application.name=executor-sample
nacos.discovery.server-addr=127.0.0.1:8848
nacos.discovery.namespace=
nacos.discovery.auto-register=true
```
* spring cloud 工程
1. 修改pom
```
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
${和nacos server匹配的client版本号}
```
2. 修改 业务工程的application.properties配置文件
```
spring.application.name=executor-sample
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.namespace=
```
3. 修改业务工程的application.properties配置文件
```
# xxl-job-admin注册到注册中心的名称,默认xxl-job-admin,可不用配置。如xxl-job-admin注册名改动,请同步修改
xxl.job.plus.admin.service-name=xxl-job-admin
# executor 注册到xxl-job-admin executor列表的名称,默认同spring.application.name,可不用配置
xxl.job.plus.executor.service-name=
# 使用默认的就好,可以不用配置
xxl.job.plus.admin.access-token=
xxl.job.plus.admin.context-path=
xxl.job.plus.executor.log-path=
xxl.job.plus.executor.log-retention-days=
```
4. 启动工程
5. 查看注册中心服务是否注册上
6. 进入xxl-job-admin,手动新增执行器,输入执行器名,选择自动注册,保存。在列表中就能看到online机器出现
7.
注册中心上下线xxl-job-admin服务,executor服务会自动刷新本地缓存,不再对下线的xxl-job-admin发送心跳,有新xxl-job-admin服务上线,会自动发送心跳,由于nacos的状态订阅延时和xxl-job-core心跳延时,xxl-job-admin中executor服务online状态会存在一定的延时
8.
注册中心上下线executor服务,executor服务台会自动启动或停止executor在xxl-job-admin中的状态。由于nacos的状态订阅延时和xxl-job-core心跳延时,xxl-job-admin中executor服务online状态会存在一定的延时
## 参与贡献
欢迎参与项目贡献!比如提交PR修复一个bug,或者新建 Issue 讨论新特性或者变更。
## 赞助
开源不易,如果你享受本开源产品带来的便利,那就请作者喝杯奶茶吧
