xxljob 服务端启动-XxlJobScheduler 对象(1)
服务端 是项目中 xxl--job-admin 模块。 基于springboot框架,服务端是通过 XxlJobAdminConfig 类,来启动xxljob 整个调度框架。
XxlJobAdminConfig 实现了 InitializingBean, DisposableBean 接口
public class XxlJobAdminConfig implements InitializingBean, DisposableBean
- InitializingBean 只有一个afterPropertiesSet()方法,从名字也可以看出是当 bean 的属性都注入完后,框架会调用的方法
- DisposableBean 只有一个 destroy()方法,是当bean对象被spring回收前 调用次方法
在afterPropertiesSet()方法 中,创建 XxlJobScheduler 对象,并调用其init() 方法来初始化整个调度框架
@Override public void afterPropertiesSet() throws Exception { adminConfig = this; xxlJobScheduler = new XxlJobScheduler(); xxlJobScheduler.init(); }
属性介绍
/** * 默认 zh_ch */ @Value("${xxl.job.i18n}") private String i18n; /** * 默认 defaultToken */ @Value("${xxl.job.accessToken}") private String accessToken; /** * 默认 xx@qq.com */ @Value("${spring.mail.from}") private String emailFrom; /** * 默认 200, 快线程池的最大线程数 */ @Value("${xxl.job.triggerpool.fast.max}") private int triggerPoolFastMax; /** * 默认 100 慢线程池的最大线程数 */ @Value("${xxl.job.triggerpool.slow.max}") private int triggerPoolSlowMax; /** * 默认 30 */ @Value("${xxl.job.logretentiondays}") private int logretentiondays; // dao, service /** * 记录任务调度表,包含 任务信息(任务组信息),执行信息(执行器信息),调度信息,处理信息,告警信息 */ @Resource private XxlJobLogDao xxlJobLogDao; /** * 任务信息表,对应的是管理页面中【任务管理】页面 */ @Resource private XxlJobInfoDao xxlJobInfoDao; /** * 任务注册表,记录的时候任务客户端 注册到服务端的信息,执行组名,客户端ip地址等 */ @Resource private XxlJobRegistryDao xxlJobRegistryDao; /** * 执行器表,对应的是管理页面中【执行器管理】页面。记录这执行器信息,执行器下所有任务的客户端ip地址 */ @Resource private XxlJobGroupDao xxlJobGroupDao; /** * 调度报表,对应的是管理页面中【运行报表】页面->【日期分布图】 */ @Resource private XxlJobLogReportDao xxlJobLogReportDao; /** * 封装电子邮件发送功能 */ @Resource private JavaMailSender mailSender; /** * 数据源实体类 */ @Resource private DataSource dataSource; /** * 任务告警实体类 */ @Resource private JobAlarmer jobAlarmer;
XxlJobScheduler 对象封装了整个调度框架
- 初始化(启动)
- 资源销毁(停止,DisposableBean 回调的destroy())
- 缓存客户端执行器列表
XxlJobScheduler init() 方法
public void init() throws Exception { // init i18n,国际化配置初始化 initI18n(); // admin trigger pool start 任务触发线程池启动,该方法启动了 快慢 两个线程池 JobTriggerPoolHelper.toStart(); // admin registry monitor run
//任务注册类,该方法启动了两个线程池,一个用来处理任务注册客户端,并更新已注册客户端的心跳时间
// 另一个是 监控执行器中是否存在 超过心跳阈值的执行器,并删除已超时的任务,刷新在线任务 JobRegistryHelper.getInstance().start(); // admin fail-monitor run 失败任务的监控线程,该线程监控 存在失败的任务,并对任务进行重试 JobFailMonitorHelper.getInstance().start(); // admin lose-monitor run ( depend on JobTriggerPoolHelper )
// 执行任务的结果不存在处理线程,依赖于 JobTriggerPoolHelper JobCompleteHelper.getInstance().start(); // admin log report start 定时更新【任务分布图】的数据 JobLogReportHelper.getInstance().start(); // start-schedule ( depend on JobTriggerPoolHelper ) 启动任务调度线程 JobScheduleHelper.getInstance().start(); logger.info(">>>>>>>>> init xxl-job admin success."); }