其他分享
首页 > 其他分享> > xxl-job(v2.1.0 Release)执行器注册原理

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