项目场景:
XXL-JOB是一个分布式任务调度平台,它能够帮助开发者轻松地实现任务的定时执行、任务调度和任务管理
接入步骤
下载XXL-JOB压缩包
链接: xxl-job
XXL-JOB做为子模块
- 将压缩包解压,项目二级新建目录xxl-job,放入目录中。例:
- my-msdf-cloud
- my-gateway
- my-auth
- my-system
- xxl-job
- 将xxl-job-executor-samples文件夹中的XxlJobConfig配置类,拷贝到xxl-job-core中。然后将文件夹xxl-job-executor-samples删除即可,里面是范例DEMO代码。
- 在根目录的pom.xml文件中,将xxl-job模块设置为子模块。
<modules>
<module>...</module>
<module>...</module>
<module>xxl-job</module>
</modules>
- 在xxl-job文件夹中找到/doc/db,在数据库中执行文件tables_xxl_job.sql。
- 修改xxl-job-admin下的配置文件,主要将端口号更改防止冲突,还有将数据库连接信息更改,accessToken设置为空
server.port=9090
server.servlet.context-path=/xxl-job-admin
### 新增的信息,用于后续注册nacos
spring.application.name=xxl-job-admin
......
......
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://xxx:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
......
......
### xxl-job, access token
xxl.job.accessToken=
- 在xxl-job-admin中引入Nacos服务注册的依赖和自定义的公共配置
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.my</groupId>
<artifactId>my-common-config</artifactId>
</dependency>
公共配置里面是Nacos的相关信息,如没有公共配置的文件,可以直接在xxl-job-admin的配置文件里面写入以下内容
spring.cloud.nacos.discovery.server-addr=xxx:8848
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.config.server-addr=xxx:8848
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
spring.cloud.nacos.config.file-extension=yml
spring.cloud.nacos.config.shared-dataids=common.yml
- 启动运行xxl-job-admin的启动类,可以发现启动成功,并且注册到了Nacos。
xxl-job地址:http://localhost:9090/xxl-job-admin/
使用
- 在需要使用的微服务引入依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
</dependency>
- 配置文件新增xxl-job信息
xxl:
job:
admin:
addresses: http://localhost:9090/xxl-job-admin/
executor:
#不同的微服务执行器端口设置为不同
port: 9092
#分别配置执行器的名称、ip地址、端口号
#注意:如果配置多个执行器时,防止端口冲突
appname: my-system
address:
ip:
#执行器运行日志文件存储的磁盘位置,需要对该路径拥有读写权限
logpath: /logs/xxl-job/jobhandler
#执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效;
#-1表示永不删除
logretentiondays: 200
accessToken:
- 新建配置文件
import com.xxl.job.core.config.XxlJobConfig;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyXxlJobConfig extends XxlJobConfig {
}
- 在XXL-JOB新建对应执行器
- 任务管理新建一个任务,然后在代码中新建一个类,testtest对应JobHandler里面的值
@Component(value = "testJobHandler")
public class testJobHandler {
@XxlJob(value = "testest")
public ReturnT<String> testest(String param) {
try {
XxlJobHelper.log("执行成功");
} catch (Exception e) {
XxlJobHelper.log("执行失败:"+e.getMessage());
}
return ReturnT.SUCCESS;
}
}
引入的依赖版本均在父pom中进行版本配置,未配置需要加version