开源调度平台XXL-JOB集成dubbo
关于XXL-JOB
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。
平台通过部署调度中心,使用java调度框架Quartz远程调用执行器项目来完成调度任务。调度中心只用来执行调度任务,记录调度日志,具体任务通过执行器项目被调用执行。
原生平台不支持调用dubbo,原因作者已经在github上的Issues上回答了。为了尽量保持轻量,减少对zk的依赖。
为什么要集成dubbo
我们公司现在的rpc框架使用的是dubbo,对于这些我们来说,我们需要借用XXL-JOB的调度中心的来调用服务。这些服务已经通过dubbo对外提供了,为了能让调度中心使用而在对应的服务工程下添加执行器并不是我们想要的,调度中心直接调用dubbo服务才是最合理的解决方案。
集成步骤
集成dubbo考虑使用dubbo的泛化调用来实现,好处是不用事先将dubbo的消费服务配置到调度中心的配置文件中,而是通过增加XXL-JOB的任务属性,通过任务数据来描述dubbo服务。
增加任务不需要额外的开发和部署工作,而只是在调度中心里维护任务数据而已。
-
先对任务设置做一些小改动
新增DubboMethod和DubboVersion两个描述,数据库任务表也需对应增加。 -
增加zk配置
调用dubbo服务需要有zk地址信息,这个没什么好说的。 -
创建新的IJobHandler,实现dubbo的泛化调用
// reference需要在handle的构造函数中初始化
// 用com.alibaba.dubbo.rpc.service.GenericService可以替代所有接口引用
GenericService genericService =
ReferenceConfigCache.getCache()