当前位置:首页 > 科技  > 软件

Springboot集成分布式任务调度系统XXl-Job(调度器和执行器)

来源: 责编: 时间:2023-11-07 17:17:16 401观看
导读一、部署xxl-job服务端下载xxl-job源码下载地址:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动项目、访问首页访问地址:http://localhost:8080/xxl-job-

cW428资讯网——每日最新资讯28at.com

一、部署xxl-job服务端

下载xxl-job源码

下载地址:https://gitee.com/xuxueli0323/xxl-jobcW428资讯网——每日最新资讯28at.com

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

cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

三、启动项目、访问首页

访问地址:http://localhost:8080/xxl-job-admin/ 账号:admin 密码:123456.cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

执行器管理

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

cW428资讯网——每日最新资讯28at.com

任务管理

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

cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

用户管理

用户管理可根据角色(普通用户、管理员)进行管理:新增用户、删除用户。cW428资讯网——每日最新资讯28at.com

调度日志

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

cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

运行报表

运行报表是对调度平台中执行器数、任务数、调度次数、调度明细(成功、失败)数据的汇总统计。cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

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

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

引入xxl-job调度器依赖

<dependency>         <groupId>com.xuxueli</groupId>         <artifactId>xxl-job-core</artifactId>         <version>2.3.1</version></dependency>

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 =#执行器端口:默认值:9999xxl.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;@Configurationpublic 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;@Componentpublic 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任务了。cW428资讯网——每日最新资讯28at.com

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

  • AppName:对应我们的配置:xxl.job.executor.appname = settle-system。
  • 名称:根据实际情况填写(结算系统)。
  • 注册方式:选择自动注册就可以了,结算系统在启动的时候,会自动向调度平台注册。
  • 机器地址:注册方式选择手动录入时才需要填写,此处我们无需填写。

新建完毕之后,在列表页面具体的执行器了,点击OnLine 机器地址,可查看执行器的ip和端口。cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

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

  • 执行器:选择结算系统
  • 任务描述:结算系统-月结任务
  • 负责人:根据实际情况填写
  • 报警邮件:根据实际情况填写
  • 调度类型:选择CRON
  • Cron:填写Cron表达式:0 0 3 * * ? (每日凌晨3.00执行一次)
  • 运行模式:Bean
  • JobHandler:就是我们编写的月结job任务代码中@XxlJob注解指定的名称:
    monthlySettlementJobHandler
  • 任务参数:根据实际情况填写,此demo案例没有使用参数
  • 路由策略:策略较多,此处我们选择第一个
  • 子任务ID:暂未
  • 调度过期策略:忽略
  • 阻塞处理策略:根据实际情况填写,此处我们选择单机串行
  • 任务超时时间:单位:秒,根据实际情况填写,此处是3秒
  • 失败重试次数:根据实际情况填写,此处我们选择不重试:0

cW428资讯网——每日最新资讯28at.com

执行结算系统-月结任务

点击:操作--》执行一次--》根据实际情况填写job参数--》机器地址无需填写。cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

执行后,去结算系统查看日志,会有相应业务日志输出。cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

再回到调度平台,点击:操作--》查询日志--》可看到调度时间、调度结果等等。cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

cW428资讯网——每日最新资讯28at.com

四、总结

从调度平台部署、到业务应用系统(结算系统)对接调度平台、编写月结job任务,总体流程大家应该都比较清晰了,是不是觉得还挺简单的,会不会又有些疑问,对接步骤这么简洁,其背后的原理究竟是什么?cW428资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-17561-0.htmlSpringboot集成分布式任务调度系统XXl-Job(调度器和执行器)

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 轻松掌握Python正则表达式:高效处理文本数据的秘诀!

下一篇: 在Javascript中为什么 0.1+0.2 不等于0.3 ? 源代码详细解析

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了&ldquo;本地生活&rdquo;入口,位置较深,位于首页的&ldquo;充值中心&rdquo;内,目前主要售卖美食相关的
  • 消费结构调整丨巨头低价博弈,拼多多还卷得动吗?

    来源:征探财经作者:陈香羽随着流量红利的退潮,电商的存量博弈越来越明显。曾经主攻中高端与品质的淘宝天猫、京东重拾&ldquo;低价&rdquo;口号。而过去与他们错位竞争的拼多多,靠
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元&ldquo;人在职场,应该选择什么样的着装?&rdquo;近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • 滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 存在16项违法事实开始于2121年7月,历经一年时间,网络安全审查办公室对“滴滴出行”网络安全审查终于有了一个暂时的结束。据“网信
Top