前言:官方架构图
测试展示
通过图形化界面监控定时任务的生命周期(执行-结束)
代码结构
xxl-job-master
-- xxl-job-admin : 定时任务调度中心
-- xxl-job-core : 核心工程,为xxl-job-admin和xxl-job-executor-samples提供方法调用
-- xxl-job-executor-samples : 定时任务执行器
源码分析:
1、介绍
xxl-job分为调度中心和执行器两种角色,调度中心将要 执行 的任务通过rpc 通知 执行器执行任务。
(一)调度中心 XxlJobAdminConfig
xxl-job-admin 基于Spring Boot实现的,所以我们需要找到对应的配置类。
这里分享一个找核心类的方法:先从启动类上找,如果没有就应该在conf关键包/类中。然后就找到了 XxlJobAdminConfig (com.xxl.job.admin.core.conf)。
@Component // Spring实例 public class XxlJobAdminConfig implements InitializingBean, DisposableBean { /* 提供静态实例,是调用者方便调用 XxlJobAdminConfig.getAdminConfig().getXxxDao(); 等等 */ private static XxlJobAdminConfig adminConfig = null; public static XxlJobAdminConfig getAdminConfig() { return adminConfig; } // ---------------------- XxlJobScheduler ---------------------- private XxlJobScheduler xxlJobScheduler; @Override public void afterPropertiesSet() throws Exception { adminConfig = this; xxlJobScheduler = new XxlJobScheduler(); // xxl-job调度中心核心内容 xxlJobScheduler.init(); } @Override public void destroy() throws Exception { xxlJobScheduler.destroy(); } // ---------------------- XxlJobScheduler ---------------------- // 忽略,主要是Spring注入的类,Setter、Getter方法等等 }
xxlJobScheduler.init();
public void init() throws Exception { initI18n(); JobTriggerPoolHelper.toStart(); JobRegistryHelper.getInstance().start(); JobFailMonitorHelper.getInstance().start(); JobCompleteHelper.getInstance().start(); JobLogReportHelper.getInstance().start(); // 核心方法。 JobScheduleHelper.getInstance().start(); logger.info(">>>>>>>>> init xxl-job admin success."); }
我们直接步入核心主题,其它的方法我们后续介绍