1. 说明
在平台中集成了XXL-JOB作为平台的任务调度中心。
XXL-JOB 是一个分布式的调度中心。
上图式调度的一个拓扑结构
在图中有两个角色
1.调度中心
这个调度中心负责执行器注册,进行任务调度,查看任务调度情况等。
2.执行器
执行器负责将当前的执行器注册到调度中心,调度中心负责进行统一调度,因此,只需要一个调度中心,就可以执行不同的微服务上面的任务调度。
2. 实现调度中心步骤
在实际部署时我们需要修改调度中心的配置。
比如服务的端口号和数据库等配置。
修改完成后,打包,运行 调度中心。
2.1 给微服务添加执行器
如果微服务应用需要进行任务调度,那么需要添加执行器,这样任务调度器就可以调度执行器进行任务执行。
2.1.1 添加pom.xml配置。
<dependency>
<groupId>com.redxun</groupId>
<artifactId>jpaas-job-spring-boot-starter</artifactId>
</dependency>
2.1.2 在application.properties 中增加配置
xxl-job:
enabled: ${job.system:false}
mode: nacos
admin:
admin-addresses: ${job.center:localhost:7878}
executor:
app-name: system-job #默认为 xxl-job-executor
address: ${spring.application.name}
access-token: #默认为空
log-path: logs/applogs/xxl-job/jobhandler #默认为 logs/applogs/xxl-job/jobhandler
log-retention-days: 10 #默认为 10
ip: #默认为空
port: 7679 #默认为 9999
在nacos配置微服务是否启动定时任务。
在有些情况下,我们在调试代码时,定时在后端刷新,这个时候,我们可以通过配置是否启动定时任务。上面配置有个 enabled ,在 nacos-config-dev.properties
,配置了
//用户定时服务
job.user=false
//流程定时服务
job.bpm=true
//系统定时服务
job.system=false
如果不需要启动则设置成false就好了。
在这里需要指定调度中心的路径。
指定app-name: 这个名称很重要需要在添加执行器的时候使用到。
log-path 是应用的的执行日志路径。
port:可以指定执行器的端口
ip:可以是微服务的所在的IP地址。
2.1.3 在调度中心添加执行器
在这里添加一个执行器,注意 app-name 需要和上面提到的执行的app-name 保持一致。
注册方式可以使用自动注册。
添加完成后,我们可以启动 执行器所在的微服务应用。
如上图,可以看到执行器注册上来了。
2.2 开发调度任务
在上面的步骤完了后,我们需要开发我们的定时任务。
我们在我们的微服务应用中开发我们的代码。
2.1.1 任务的代码开发
package com.redxun.bpm.ext.job;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;
@Component
public class DemoJobHandler extends IJobHandler {
@Override
@XxlJob("demoJobHandler")
public void execute() throws Exception {
//获取job配置的参数
String jobParam = XxlJobHelper.getJobParam();
System.err.println(jobParam);
// 失败时执行如下代码
// XxlJobHelper.handleFail();
System.err.println("demoJobHandler");
// 任务执行成功时执行如下代码
XxlJobHelper.handleSuccess();
}
}
这里我们开发一个简单的调度任务。
@XxlJob(“demoJobHandler”)
这个很重要,在调度配置的地方可以使用到。
param: 标识执行器参数,在配置调度的时候可以进行配置。
execute 需要根据实际的情况放回 ReturnT 数据。
2.2.1 配置调度任务
在任务管理操作界面中,我们可以添加我们的调度任务。
这里主要配置:
1.执行器
2.调度周期
3.需要执行的具体任务
我们可以进行点击执行一次进行调试。
可以看到调式情况。
我们可以看到从调度中心传过来的参数,当任务执行逻辑没问题时,我们可以启用这个调度。
点击操作,点击启动。
如上图,可以看到这个任务处于运行状态。
如此,统一任务调度中心的整个实现过程就完成了。