xxl-job搭建与使用
前言
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的整合,需要说明的有如下几点:
- 如果需要结合自身的业务将增删改查的操作或者外部的springbean注入到自定义的handler类中;
- 另外,admin控制台的部署不限于idea中启动,也可以单独打成jar包,运行在linux环境或者其他的云服务器上,而真正的开发中就是这样做的
- 最后,实际开发中,为了确保安全,最好控制台的登录账户和密码做一下设置,不要使用默认的
本篇到此结束,最后感谢观看!
xxl-job搭建与使用相关推荐
- python任务调度平台 界面_分布式任务调度平台XXL-JOB搭建教程
关于分布式任务调度平台XXL-JOB,其实作者 许雪里在其发布的中文教程中已经介绍的很清楚了,这里我就不做过多的介绍了,关于其搭建教程,本人依照其文档搭建起来基本上也没遇到啥问题,这里通过博客的形式记 ...
- 分布式任务调度平台XXL-JOB搭建使用
参考文档: xxl官方文档 https://www.xuxueli.com/xxl-job/ xxl搭建教程 https://www.cnblogs.com/ysocean/p/10541151.ht ...
- kettle使用命令行的方式执行多个job_手把手教你实现xxl-job分布式任务调度平台搭建
编辑:业余草 推荐:https://www.xttblog.com/?p=5097 最近有网友咨询我 xxl-job 相关的问题,我认为官方文档已经写的非常详细了,这里我再给大家写一个入门级的 3 分 ...
- 使用IDEA搭建XXL-JOB分布式任务调度平台
1.什么是分布式调度平台 什么是任务调度? 考虑以下应用场景: 某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券. 某银行系统需要在信用卡到期还款日的前三天进行短信提醒. 某财务系统需 ...
- 从0到1搭建大数据平台之调度系统
目前大数据平台经常会用来跑一些批任务,跑批处理当然就离不开定时任务.比如定时抽取业务数据库的数据,定时跑hive/spark任务,定时推送日报.月报指标数据.任务调度系统已经俨然成为了大数据处理平台不 ...
- 谷粒商城项目搭建思路
文章目录 基础篇 核心技术点 1. 搭建环境 1.1 安装Linux虚拟机 1.2 安装Docker 1.3 统一开发环境 1.4 搭建后台管理项目 1.5 逆向工程 1.6 测试商品服务功能 1.7 ...
- xxl-job搭建、部署、SpringBoot集成xxl-job
一.搭建xxl-job 1.下载xxl-job代码 码云地址:https://gitee.com/xuxueli0323/xxl-job gitHub地址:https://github.com/xux ...
- 分布式任务调度平台XXL-JOB的Oracle版本搭建与学习笔记
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展. 1.源码下载地址 ①.GitHub:https://github.com/xuxueli/xxl-j ...
- 【XXL-JOB】XXL-JOB的搭建和使用
[XXL-JOB]XXL-JOB的搭建和使用 文章目录 [XXL-JOB]XXL-JOB的搭建和使用 1. 任务调度 1.1 实现任务调度 1.1.1 多线程实现 1.1.2 Timer实现 1.1. ...
最新文章
- 几何画板200个经典课件_几何画板Sketchpad Mac(数学教学软件)中文版
- 【转载】linux 下 cpu使用情况分析
- 2、C语言面试笔试---运算符和表达式
- 【caffe-Windows】mnist实例编译之model的使用-matlab
- PyQt5学习笔记03----Qt Designer生成源码
- 学习使用资源文件[6] - 菜单资源
- 智能工厂系统架构图_一些智能化弱电系统架构图,做方案可以用
- bzoj 2821:作诗 分块
- Linux下vsftp服务器原理、安装、配置实战
- RTKLIB专题学习(八)—卫星星历和钟差
- 用JAVA 创建自己的 A4 打印语言
- c#winform利用opencvsharp的Floodfill实现类似PS魔棒功能
- C语言初阶小练习(1)
- 开发者如何在 DoraHacks 上参加 Web3世界的 Hackathon 和 Grant
- strtok strtok_s strsep
- 按键判断之GetKeyState 和 GetAsyncKeyState 区别
- 热成像测温的原理是什么呢?你知道吗?
- 基于嵌入式linux 的蓝牙通信系统设计与实现的研究意义,嵌入式Linux操作系统通信管理机的设计研究...
- 最全Arduino控制电机教程说明和资料分享
- WM8960耳机插拔检测