前言

XL-JOB是一个分布式任务调度平台,开发迅速、学习简单、轻量级、易扩展。其经受了大量互联网公司试验与使用,前身是美团内部的一个产品,后来经守住考验得到广泛使用而开源

官方地址中文版:https://www.xuxueli.com/xxl-job/

XXL-JOB官方架构图

xxl-job可以类比elastic-job,它们都可用于分布式架构模式下,官方给出的参考说明较为丰富,这里小编不再就此展开说明,从开发者角度来说,接入xxl-job主要包括下面几个步骤:

  • 部署xxl-job的控制台
  • 在自己的产品或者实际项目中导入xxl-job核心依赖库
  • 编码自定义jobHandler
  • 控制台进行job的参数配置,并动态管理运行中的job

下面,就上面描述的几个步骤进行,把xxl-job的环境从搭建部署,到与springboot项目的整合,进行一个完整的说明

xxl-job管控台搭建与部署

1、git下载xxl-job源码

下载地址:https://github.com/xuxueli/xxl-job,可以根据自己的需要,下载指定的版本

2、idea工程中导入源码

源码主要包括3部分,admin模块是控制台的,即本文开头部分所阐述的,core包是核心包,包括一些调度的逻辑等,项目中整合xxl-job时,依赖的就是这个模块,实际应用中,可以结合自身需要进行源码的修改和发布,最后的samples模块是官方提供的样例demo

3、修改admin模块的配置文件并启动admin


首先将源码的doc目录下的sql文件运行一下,创建到数据库中,xxl-job运行过程中需要依赖数据库

然后修改amin模块下的配置文件,主要是连接数据库的配置,

修改完毕之后,启动admin,直接运行XxlJobAdminApplication即可,成功启动之后,浏览器访问:http://localhost:8080,初始化登录账户和密码为: root/123456

默认将进入到这个页面

后面管理job的动态配置,都是通过这个管控台操作的,默认情况下,源码中给我们配置了一个样例的执行器,

这个样例执行器在哪里呢?对应的就是样例模块下面的这个工程,

在这个工程中,有一个SampleXxlJob的类,对于xxl-job来说,使用方便的地方在于,如果我们想自定义一个任务并通过控制台进行操作的话,只需要一个被spring容器管理的类,然后在自定义的方法上面添加@XxlJob注解即可完成

启动xxl-job-executor-sample-springboot样例工程,可以不用做其他修改,直接启动,重点关注下样例工程配置文件这几处,想必大家一看就懂,

这时候刷新下控制台页面,可以发现在执行器一栏,这个样例工程中的执行器就处于在线状态,说明admin能够监控到这个执行器了

4、配置并启动样例工程的job,实现任务调度

接下来,只需要在当前这个执行器的操作栏那里,配置相应的参数即可完成对任务的调度,我们只需要来到这个参数配置页面,对即将调度的handler做简单的配置即可,主要包括:执行器名称,任务描述,以及cron表达式,相信大家都能看懂


配置完毕之后,点击启动即可

然后,我们去后台观察下控制台输出日志,可以发现,当我们点击启动之后,后台的任务就开始了,当然如果不需要执行了,还可以进行删除,或者重新编辑参数等

到这里,我们完成了xxl-job的控制台快速部署,以及通过控制台调度任务的案例初体验,接下来,我们来看下与springboot的整合

与springboot的整合

1、项目中导入核心依赖

注意版本对应起来

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

2、修改配置文件

可以参考样例工程中的配置,下面是核心的配置,其他的原有的配置保持不变

xxl:job:accessToken:admin:addresses: http://127.0.0.1:8080/xxl-job-adminexecutor:appname: multi-threadaddress:ip:logpath: /data/applogs/xxl-job/jobhandlerport: 9981logretentiondays: 30

3、新增一个xxl-job的配置管理类

仍然可以直接将样例工程中的XxlJobConfig拷贝过来直接使用

@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;@Beanpublic 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;}}

4、自定义job类

参考样例类中的SampleXxlJob,我们来自己写一个

@Component
@Slf4j
public class UserJob {/*** 1、简单任务示例(Bean模式)*/@XxlJob("testHandler")public ReturnT<String> testHandler(String param) throws Exception {XxlJobLogger.log("XXL-JOB, Hello World.");log.info("userJobHandler, Hello World");return ReturnT.SUCCESS;}}

以上整合基本完毕,下面只需要去控制台做相关的参数配置即可,来到控制台,我们新增一个任务,并模仿上面的样例配置类,配置好基本的参数

5、启动项目并开启自定义任务调度

将自己的项目运行起来之后,来到控制台,发现监测到我们新的任务执行器了

点击启动,来到项目的控制台,可以发现任务已经被调度了

到此为止,我们就完成了与springboot的整合,需要说明的有如下几点:

  1. 如果需要结合自身的业务将增删改查的操作或者外部的springbean注入到自定义的handler类中;
  2. 另外,admin控制台的部署不限于idea中启动,也可以单独打成jar包,运行在linux环境或者其他的云服务器上,而真正的开发中就是这样做的
  3. 最后,实际开发中,为了确保安全,最好控制台的登录账户和密码做一下设置,不要使用默认的

本篇到此结束,最后感谢观看!

xxl-job搭建与使用相关推荐

  1. python任务调度平台 界面_分布式任务调度平台XXL-JOB搭建教程

    关于分布式任务调度平台XXL-JOB,其实作者 许雪里在其发布的中文教程中已经介绍的很清楚了,这里我就不做过多的介绍了,关于其搭建教程,本人依照其文档搭建起来基本上也没遇到啥问题,这里通过博客的形式记 ...

  2. 分布式任务调度平台XXL-JOB搭建使用

    参考文档: xxl官方文档 https://www.xuxueli.com/xxl-job/ xxl搭建教程 https://www.cnblogs.com/ysocean/p/10541151.ht ...

  3. kettle使用命令行的方式执行多个job_手把手教你实现xxl-job分布式任务调度平台搭建

    编辑:业余草 推荐:https://www.xttblog.com/?p=5097 最近有网友咨询我 xxl-job 相关的问题,我认为官方文档已经写的非常详细了,这里我再给大家写一个入门级的 3 分 ...

  4. 使用IDEA搭建XXL-JOB分布式任务调度平台

    1.什么是分布式调度平台 什么是任务调度? 考虑以下应用场景: 某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券. 某银行系统需要在信用卡到期还款日的前三天进行短信提醒. 某财务系统需 ...

  5. 从0到1搭建大数据平台之调度系统

    目前大数据平台经常会用来跑一些批任务,跑批处理当然就离不开定时任务.比如定时抽取业务数据库的数据,定时跑hive/spark任务,定时推送日报.月报指标数据.任务调度系统已经俨然成为了大数据处理平台不 ...

  6. 谷粒商城项目搭建思路

    文章目录 基础篇 核心技术点 1. 搭建环境 1.1 安装Linux虚拟机 1.2 安装Docker 1.3 统一开发环境 1.4 搭建后台管理项目 1.5 逆向工程 1.6 测试商品服务功能 1.7 ...

  7. xxl-job搭建、部署、SpringBoot集成xxl-job

    一.搭建xxl-job 1.下载xxl-job代码 码云地址:https://gitee.com/xuxueli0323/xxl-job gitHub地址:https://github.com/xux ...

  8. 分布式任务调度平台XXL-JOB的Oracle版本搭建与学习笔记

    XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展. 1.源码下载地址 ①.GitHub:https://github.com/xuxueli/xxl-j ...

  9. 【XXL-JOB】XXL-JOB的搭建和使用

    [XXL-JOB]XXL-JOB的搭建和使用 文章目录 [XXL-JOB]XXL-JOB的搭建和使用 1. 任务调度 1.1 实现任务调度 1.1.1 多线程实现 1.1.2 Timer实现 1.1. ...

最新文章

  1. 几何画板200个经典课件_几何画板Sketchpad Mac(数学教学软件)中文版
  2. 【转载】linux 下 cpu使用情况分析
  3. 2、C语言面试笔试---运算符和表达式
  4. 【caffe-Windows】mnist实例编译之model的使用-matlab
  5. PyQt5学习笔记03----Qt Designer生成源码
  6. 学习使用资源文件[6] - 菜单资源
  7. 智能工厂系统架构图_一些智能化弱电系统架构图,做方案可以用
  8. bzoj 2821:作诗 分块
  9. Linux下vsftp服务器原理、安装、配置实战
  10. RTKLIB专题学习(八)—卫星星历和钟差
  11. 用JAVA 创建自己的 A4 打印语言
  12. c#winform利用opencvsharp的Floodfill实现类似PS魔棒功能
  13. C语言初阶小练习(1)
  14. 开发者如何在 DoraHacks 上参加 Web3世界的 Hackathon 和 Grant
  15. strtok strtok_s strsep
  16. 按键判断之GetKeyState 和 GetAsyncKeyState 区别
  17. 热成像测温的原理是什么呢?你知道吗?
  18. 基于嵌入式linux 的蓝牙通信系统设计与实现的研究意义,嵌入式Linux操作系统通信管理机的设计研究...
  19. 最全Arduino控制电机教程说明和资料分享
  20. WM8960耳机插拔检测

热门文章

  1. LNMT/LAMT实现动静分离、负载均衡和会话保持
  2. 像QQ一样输入表情图像
  3. java json格式化工具类
  4. P1119 灾后重建(floyd进阶)
  5. 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点
  6. 卸载exchange后注意事项
  7. Android——DDMS简单介绍
  8. CodeForces 484B Maximum Value
  9. 自定义jQuery插件
  10. cacti 监控平台部署心得