背景
- 有服务里面在跑定时任务,一直是单点在运行,虽然存在挺大的风险,但也这样扛下来了。
但是呢,现在要做多点了,springboot 的 Scheduled,虽然好用,在多点就会存在一些问题,多个节点都跑了定时任务,就会有问题。
基于些,就把 xxl-job引用进来了。
使用说明
关于xxl-job 的使用,可以参考这个,
描述方面更加清晰:分布式定时调度:xxl-job 万字详解
虽然也不知道什么时候会不会消失这个博文(之前遇到过消失的,找不到了,很可惜)
嗯,不过关于 xxl-job 的使用,网上肯定也不缺的。我这边只记录一些使用过程中遇到过的小问题,仅当做一下笔记。
代码
源码仓库地址
代码拉下来后,按说明装上,是直接能跑的
说个小问题
当时把代码拉下来后,就想整合到项目里面去(虽然其实并没有必要,但确实这样干了),然后,整合过程中,改了pom.xml 里面的 < parent > 给换掉了,然后各种报错,报复性地报错。各种引用不对,各种properties 也都找不到,就很奇怪,怎么这个项目,根本就跑不起来啊?版本号各种都没有,还以为下载了错误的源码,但在 github上看,最多星的就是这个,不太可能其它人没问题,就我有问题啊。。emmmm,行吧。当时也没多想,但确实,浪费了不少时间。
当,我终于想起,拉下来的代码,先不要急着去整合,先让它原生态地跑一下先的时候,发现,非常丝滑。emmm,能怎么说呢,太惨了。也是一个教训吧。拿到一个东西,应该先按它原本的样子,先跑通了,再想着去做进一步的整合,不然还是很容易扯着蛋。emmm
这是第一个小问题。
跑起来后,
再说一些小事儿
其实这个 xxl-job 还是比较容易上手的,也确实很强大。很灵活,比 springboot 的做定时任务的,感觉要强大不少。嗯,当然,其实如果是单点,或者体量比较小的项目,也不一定需要用上。
好,说正经的事儿:
-
这里有一个执行器的概念,是这个啥呢,比如在我这边的项目,要把 xxl-job用起来,需要在现有项目的项目,把xxl-job-core 依赖引到pom.xml里面,然后,要进行一些配置,这个配置里面,包括注册xxl-job的地址外,还有一个 RPC 监听端口,这个端口是用于让执行器发起调度用的,是什么意思呢,就是 xxl-job中心对服务里面的某个方法/接口的调用。那这样说来,一个服务就得是单独的一个执行器,那每个服务都应该有自己的RPC监听端口,所以这个端口也是要一个节点一个端口。当节点特别多的时候,端口也是要好好管理才行。不然,会冲突!!!!(端口冲突嘛,应该很容易理解),但这个确实是一个要注意的一个地方。
-
它虽然好,但不可否认地,它也带来了一些额外的配置。并且,像端口这种每个节点都不同,配置还不能完全复用(在配置中心不能引用同一份)。
-
有好,有麻烦。还是得看业务需求。
-
继续发现吧。总的来说,这确实是一个挺好的东西。至少解决了项目上服务集群的定时任务的问题。