springboot集成分布式任务调度系统xxl-job(调度器和执行器)

一、部署xxl-job服务端

下载xxl-job源码

下载地址:
https://gitee.com/xuxueli0323/xxl-job

二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库

springboot集成分布式任务调度系统xxl-job(调度器和执行器)_第1张图片

三、启动项目、访问首页

访问地址:
http://localhost:8080/xxl-job-admin/ 账号:admin 密码:123456

springboot集成分布式任务调度系统xxl-job(调度器和执行器)_第2张图片

执行器管理

我们部署的是调度器管理平台,执行器就是我们实际开发的应用系统:比如:会员系统、订单系统、结算系统等等;执行器管理可以对每一个注册上来的执行器进行管理(编辑、删除执行器等)

任务管理

我们应用系统都会有自己特定的job任务:比如:会员系统定时拉取一些会员推送模板消息、短信消息;结算系统定时生成结算任务、报表等。任务管理可根据具体的执行器、job任务名称(JobHandler)、任务描述等进行筛选;可新增任务、启动任务、执行任务、查询调度日志,功能比较丰富。

用户管理

用户管理可根据角色(普通用户、管理员)进行管理:新增用户、删除用户

调度日志

在调度日志模块可查询我们执行任务时的具体情况,可根据具体的执行器、任务名称、执行状态进行筛选(成功、失败、进行中),对于进行中的任务可手动终止;调度备注列可查看调度详情,比如:我们的任务被调度到哪一台机器、调度的结果码、结果信息等等。

运行报表

运行报表是对调度平台中执行器数、任务数、调度次数、调度明细(成功、失败)数据的汇总统计。

四、新建结算系统执行器【仅仅是个demo案例】

看到此处,想必大家心中对xxl-job已经有了一些初步的了解和感受,摩拳擦掌,趁热打铁,下面我们新建一个结算系统应用,注册到调度平台,并新建一个月结任务,测试下吧。

引入xxl-job调度器依赖


         com.xuxueli
         xxl-job-core
         2.3.1

application.properties配置文件新增xxl-job配置

#xxljob config
#调度器地址
xxl.job.admin.addresses = http://127.0.0.1:8080/xxl-job-admin
#鉴权用暂无
xxl.job.accessToken =
#执行器名称(就是我们的业务系统) 
xxl.job.executor.appname = settle-system
#执行器地址和ip,demo案例无需填写
xxl.job.executor.address =
xxl.job.executor.ip =
#执行器端口:默认值:9999
xxl.job.executor.port = 9999
#日志路径
xxl.job.executor.logpath = D:\\tmp\\log
#日志清理时间
xxl.job.executor.logretentiondays = 30

执行器配置类(XxlJobConfig.java):

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.beans.factory.annotation.Value;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.context.annotation.Configuration;

@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @Value("${xxl.job.accessToken}")
    private String accessToken;

    @Value("${xxl.job.executor.appname}")
    private String appname;

    @Value("${xxl.job.executor.address}")
    private String address;

    @Value("${xxl.job.executor.ip}")
    private String ip;

    @Value("${xxl.job.executor.port}")
    private int port;

    @Value("${xxl.job.executor.logpath}")
    private String logPath;

    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;


    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        logger.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appname);
        xxlJobSpringExecutor.setAddress(address);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }

编写结算系统-月结job任务(
MonthlySettlementJobHandler.java)

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.xxl.job.core.handler.annotation.XxlJob;

@Component
public class MonthlySettlementJobHandler {

    private static Logger logger = LoggerFactory.getLogger(MonthlySettlementJobHandler.class);

		// 使用@XxlJob注解,将monthlySettlementJobHandler任务注册到调度平台
    @XxlJob("monthlySettlementJobHandler")
    public void monthlySettlementJobHandler(String param) throws InterruptedException {
        try {
            logger.info("结算系统-月结任务执行 参数: {}", param);
        } catch (Exception e) {
            logger.error("结算系统-月结任务执行 异常 参数: {} 异常信息: ", param, e);
        }
    }
}

结算系统执行器代码编写完毕,启动成功后,就需要去调度器管理平台新建我们的执行器、以及我们的job任务了。

在调度平台新建结算系统执行器

AppName:对应我们的配置:xxl.job.executor.appname = settle-system

名称:根据实际情况填写(结算系统)

注册方式:选择自动注册就可以了,结算系统在启动的时候,会自动向调度平台注册

机器地址:注册方式选择手动录入时才需要填写,此处我们无需填写

新建完毕之后,在列表页面具体的执行器了,点击OnLine 机器地址,可查看执行器的ip和端口

在调度平台新建结算系统调度任务

执行器:选择结算系统

任务描述:结算系统-月结任务

负责人:根据实际情况填写

报警邮件:根据实际情况填写

调度类型:选择CRON

Cron:填写Cron表达式:0 0 3 * * ? (每日凌晨3.00执行一次)

运行模式:Bean

JobHandler:就是我们编写的月结job任务代码中@XxlJob注解指定的名称:
monthlySettlementJobHandler

任务参数:根据实际情况填写,此demo案例没有使用参数

路由策略:策略较多,此处我们选择第一个

子任务ID:暂未

调度过期策略:忽略

阻塞处理策略:根据实际情况填写,此处我们选择单机串行

任务超时时间:单位:秒,根据实际情况填写,此处是3秒

失败重试次数:根据实际情况填写,此处我们选择不重试:0

执行结算系统-月结任务

点击:操作--》执行一次--》根据实际情况填写job参数--》机器地址无需填写

执行后,去结算系统查看日志,会有相应业务日志输出

再回到调度平台,点击:操作--》查询日志--》可看到调度时间、调度结果等等

四、总结

从调度平台部署、到业务应用系统(结算系统)对接调度平台、编写月结job任务,总体流程大家应该都比较清晰了,是不是觉得还挺简单的

你可能感兴趣的:(spring,boot,分布式,wpf)