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.");
}

浙公网安备 33010602011771号