为了能便于统一管理定时任务,并灵活设置任务的执行时间、启动/停止,于是引入了xxl-job框架
使用xxl-job-2.2.0.release版本,点这里看xxl-job官网文档
主要是在调度中心页面(地址:http://192.168.1.61:9080/xxl-job-admin/)集中配置执行器(执行任务的微服务)及任务
下面用cmis-enroll举例
执行器配置
1.导入maven依赖(已放到项目根pom文件中)
<!-- 引入任务调度中心 -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.2.0</version>
</dependency>
2.在cmis-enroll项目的application-dev.yml中添加如下配置:
# 任务调度中心
xxl:
job:
admin:
# 调度中心平台地址
addresses: http://192.168.1.61:9080/xxl-job-admin
### xxl-job, access token
accessToken:
### xxl-job executor appname
executor:
appname: cmis-enroll
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
address:
### xxl-job executor server-info
ip: 192.168.10.28
port: 9100
### xxl-job executor log-path
logpath: /Users/changzhichen/logs
### xxl-job executor log-retention-days
logretentiondays: 30
3.新增类 XxlJobConfig.java
用来读取上述配置,初始化XxlJobSpringExecutor
(/cmis-enroll/src/main/java/com.bolt.enroll.config.XxlJobConfig)
4.新建类并按下图进行配置,@XxlJob的值在调度中心新增任务时使用
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import org.springframework.stereotype.Component;
@Component
public class TestHandler {
@XxlJob("testHandler")
public ReturnT<String> testHandler(String param) throws Exception {
XxlJobLogger.log("XXL-JOB, Hello World.");
// todo 业务操作
return ReturnT.SUCCESS;
}
@XxlJob("testHandler2")
public ReturnT<String> testHandler2(String param) throws Exception {
XxlJobLogger.log("XXL-JOB, Hello World.");
// todo 业务操作
return ReturnT.SUCCESS;
}
}
5.对已有的任务进行升级改造
1.去掉@Scheduled注解,改为@XxlJob注解,
2.再修改方法返回值为ReturnT<>,
3.添加方法参数String param(即使没用,也不可省略,否则报错)
4.改造完成。
注意:要使用下面的代码,来返回给调度平台结果
XxlJobLogger.log(“XXL-JOB, Hello World.”);
执行器、任务配置
1.登录调度平台
2.执行器管理–》新增执行器并保存
说明:
a).AppName就是在项目中配置的appname
b).名称、排序自定义即可
c).注册方式
自动注册(推荐使用):执行器运行成功后,会调度中心会自动获取ip及port(经查源码,发现延迟30秒后可在执行器管理列表的“OnLine 机器地址”中看到)
手动注册(可支持多个地址,中间以,隔开): http://192.168.1.1:9991,http://192.168.1.2:9992
3.任务管理–》新增任务
下拉框选择新增的执行器,点右侧的新增任务
填入红色*的项,其中主要改:
Cron:定时任务执行的时间配置
jobHandler:方法中@XxlJob的值
其它默认即可
4.配置完成
完成上述步骤,即可点击操作下的执行、启动等按钮,通过“查看日志”来验证定时任务是否成功执行了