在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题:
xxl-job中心式的调度平台轻量级,开箱即用,操作简易,上手快,与SpringBoot有非常好的集成,而且监控界面就集成在调度中心,界面又简洁,对于企业维护起来成本不高,还有失败的邮件告警等等。这就使很多企业选择xxl-job做调度平台。
具体安装参照官方文档,官方是最靠谱的
https://www.xuxueli.com/xxl-job/
这里主要记录一下XXL-JOB有2块,
参考其官方文档 2.3 配置部署“调度中心”
在你的springboot业务项目中,引入这个xxl-job-executor-sample-springboot模块就可以了
执行器支持集群部署,提升调度系统可用性,同时提升任务处理能力。
执行器集群部署时,几点要求和建议:
这里我们本地启动,先创建好数据库,并且导入官方提供的sql
Run 起来,查看控制台,显示 success 就启动成功
打开浏览器,输入后台地址 http://localhost:8080/xxl-job-admin, 账号damin ,密码默认是123456
这里我们启动2个,测试下集群的任务运行情况:
先打开一个执行器的配置文件application.properties
8082就是复制的第二个执行器,代码相同,改一下端口
xxl.job.admin.addresses,填写你上面调度中心的地址
xxl.job.accessToken,调度中心如果配置了就要写,没有写就默认空着
xxl.job.executor.appname,执行器名称,官网文档说了如果集群,appname要一致
两个执行器都跑起来:
8081
8082
回到后台调度中心后台,2个执行器已经自动注册
前提:在执行器中,都有已经写好了定时任务,我们用的官网demo,里面已经有写好的方法了
回到调度中心的任务管理,
我们编辑此任务,将路由策略改为轮询:
保存后,执行一次,看看效果:
查看控制台,8082打印了日志,说明8082运行了任务,8081没有执行,因为我们执行路由策略是轮询,并且保证这个任务只能被执行一次
再执行一次,8081 执行了
以上就是这次对XXL-JOB的一次学习和总结,以后如果有集群部署的地方,就不要再去使用springboot的Quartz这种只适合单体项目的定时任务了,如果不手动去处理,多个服务会重复执行,可以考虑使用XXL-JOB,部署简单、学习成本低!