XL-JOB是一个分布式任务调度平台,开发迅速、学习简单、轻量级、易扩展。其经受了大量互联网公司试验与使用,前身是美团内部的一个产品,后来经守住考验得到广泛使用而开源
官方地址中文版:https://www.xuxueli.com/xxl-job/
XXL-JOB官方架构图
xxl-job可以类比elastic-job,它们都可用于分布式架构模式下,官方给出的参考说明较为丰富,这里小编不再就此展开说明,从开发者角度来说,接入xxl-job主要包括下面几个步骤:
下面,就上面描述的几个步骤进行,把xxl-job的环境从搭建部署,到与springboot项目的整合,进行一个完整的说明
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的整合
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-admin
executor:
appname: multi-thread
address:
ip:
logpath: /data/applogs/xxl-job/jobhandler
port: 9981
logretentiondays: 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;
@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;
}
}
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的整合,需要说明的有如下几点:
本篇到此结束,最后感谢观看!
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/zhangcongyi420/article/details/120297060
内容来源于网络,如有侵权,请联系作者删除!