Spring集成XxlJob核心初始化类,对应版本:2.4.1-SNAPSHOT

XxlJobSpringExecutor: 继承了XxlJobExecutor父类,实现了ApplicationContextAware,SmartInitializingSingleton,DisposableBean接口
在Spring容器启动后根据是否是单例Bean来执行SmartInitializingSingleton接口的afterSingletonsInstantiated()方法调用
1、从Spring容器中获取所有的BeanName集合,通过BeanName找到对应的Bean的所有标注了 @XxlJob 注解的方法,将其封装为 MethodJobHandler 类放到XxlJob jobHandlerRepository容器中
   @XxlJob 注解: value(): jobhandler name;init(): 初始化handler,在运行handler方法前调用;destroy(): 在handler方法运行结束后进行调用
2、GlueFactory.refreshInstance(1): Bean的属性注入处理
3、XxlJobFileAppender.initLogPath(logPath): 应用初始化日志文件夹,可以通过 xxl.job.executor.logpath 配置进行修改
4、initAdminBizList(adminAddresses, accessToken): 根据客户端配置的链接XxlJob-admin应用的地址列表和接口访问令牌进行AdminBizClient类初始化,可以通过 xxl.job.admin.addresses 配置进行修改,可以配置多个地址,使用英文逗号进行分割,单机器的资源是有限的,可以通过分片策略来把任务发送到指定范围的机器上进行任务调度
5、JobLogFileCleanThread.getInstance().start(logRetentionDays): 启动磁盘日志文件清理线程,可以通过配置 xxl.job.executor.logretentiondays 配置来调整,小于3天任务直接不启动,配置大于等于3天时,会一天执行一次,清理超过配置天数日期的日志文件
6、TriggerCallbackThread.getInstance().start(): 任务执行结果回调线程,通过远程通信,将调用结果同步到xxljob-admin应用上, 必须满足AdminBizList是有数据,两个线程,一个从队列中获取所有的数据进行回调,另一个是回调失败重试线程
7、initEmbedServer(address, ip, port, appname, accessToken): 启动远程通信服务,底层使用netty进行服务通信,EmbedHttpServerHandler 使用单独的线程池来处理请求信息,目前请求仅支持POST请求,并且只处理 /beat:心跳 /idleBeat:空闲检测 /run:执行任务 /kill:结束任务 /log:记录日志 这几种请求类型
 

你可能感兴趣的:(xxl-job,java,后端)