xxl-job(v2.1.0 Release)执行器注册原理
作者:互联网
前言
在v2.1.0 Release版本中已经移除了quartz依赖,降低了依赖,提高了系统的可控性和稳定性。
此版本才用的通讯方案是"NETTY_HTTP"方案,执行器内嵌netty-http-server提供服务,调度中心复用容器端口提供服务。
执行器注册流程
1、打开执行器管理,我们添加一条执行器
AppName
: 是每个执行器集群的唯一标示AppName, 执行器会周期性以AppName为对象进行自动注册。可通过该配置自动发现注册成功的执行器, 供任务调度时使用;(AppName在执行器的属性文件配置了 xxl.job.executor.appname=xxl-job-executor-sample
)
名称
: 执行器的名称, 因为AppName限制字母数字等组成,可读性不强, 名称为了提高执行器的可读性;
排序
: 执行器的排序, 系统中需要执行器的地方,如任务新增, 将会按照该排序读取可用的执行器列表;
注册方式
:调度中心获取执行器地址的方式;
自动注册
:执行器自动进行执行器注册,调度中心通过底层注册表可以动态发现执行器机器地址;
手动录入
:人工手动录入执行器的地址信息,多地址逗号分隔,供调度中心使用;
机器地址:"注册方式"为"手动录入"时有效,支持人工维护执行器的地址信息;
2、注册流程
1)先看看执行器中XxlJobConfig
2)创建XxlJobSpringExecutor 对象并且初始化执行start方法
@Configuration
public class XxlJobConfig {
..............................................
//创建XxlJobSpringExecutor 对象,并且初始化执行XxlJobSpringExecutor 的start方法
@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppName(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
3)执行XxlJobSpringExecutor的start()方法
public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationContextAware {
@Override
public void start() throws Exception {
//初始化JobHandler 仓库 注册JobHandler
// init JobHandler Repository
initJobHandlerRepository(applicationContext);
// refresh GlueFactory
GlueFactory.refreshInstance(1);
//接着执行XxlJobExecutor的start()方法
// super start
super.start();
}
}
然后执行XxlJobExecutor 的start()方法
public class XxlJobExecutor {
//执行start()方法
public void start() throws Exception {
//初始化admin调度中心代理类
//轮询调度中心地址,多个地址用逗号隔开,每当遇到一个地址就生成代理类AdminBiz。
initAdminBizList(adminAddresses, accessToken);
//admin的服务启动:让执行器可以调用调度中心的接口
initRpcProvider(ip, port, appName, accessToken);
}
}
执行getObject()
getObject()完成向调度中心发送请求进行服务注册操作
通过反射获取xxl-rpc的代理,然后通过调度中心的地址向调度中心请求注册
标签:执行器,调度,v2.1,start,job,注册,XxlJobSpringExecutor,xxlJobSpringExecutor 来源: https://blog.csdn.net/k393393/article/details/99580828