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.需要执行的具体任务

我们可以进行点击执行一次进行调试。

可以看到调式情况。

我们可以看到从调度中心传过来的参数,当任务执行逻辑没问题时,我们可以启用这个调度。

点击操作,点击启动。

如上图,可以看到这个任务处于运行状态。

如此,统一任务调度中心的整个实现过程就完成了。

文档更新时间: 2022-06-22 10:21   作者:zyg