xxljob 服务端启动-XxlJobScheduler 对象(1)
服务端 是项目中 xxl--job-admin 模块。 基于springboot框架,服务端是通过 XxlJobAdminConfig 类,来启动xxljob 整个调度框架。
XxlJobAdminConfig 实现了 InitializingBean, DisposableBean 接口
1 | public class XxlJobAdminConfig implements InitializingBean, DisposableBean |
- InitializingBean 只有一个afterPropertiesSet()方法,从名字也可以看出是当 bean 的属性都注入完后,框架会调用的方法
- DisposableBean 只有一个 destroy()方法,是当bean对象被spring回收前 调用次方法
在afterPropertiesSet()方法 中,创建 XxlJobScheduler 对象,并调用其init() 方法来初始化整个调度框架
1 2 3 4 5 6 | @Override public void afterPropertiesSet() throws Exception { adminConfig = this ; xxlJobScheduler = new XxlJobScheduler(); xxlJobScheduler.init(); } |
属性介绍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | /** * 默认 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() 方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public void init() throws Exception { // init i18n,国际化配置初始化 initI18n(); // admin trigger pool start 任务触发线程池启动,该方法启动了 快慢 两个线程池 JobTriggerPoolHelper.toStart(); // admin registry monitor run <br> //任务注册类,该方法启动了两个线程池,一个用来处理任务注册客户端,并更新已注册客户端的心跳时间<br> // 另一个是 监控执行器中是否存在 超过心跳阈值的执行器,并删除已超时的任务,刷新在线任务 JobRegistryHelper.getInstance().start(); // admin fail-monitor run 失败任务的监控线程,该线程监控 存在失败的任务,并对任务进行重试 JobFailMonitorHelper.getInstance().start(); // admin lose-monitor run ( depend on JobTriggerPoolHelper )<br> // 执行任务的结果不存在处理线程,依赖于 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." ); } |
分类:
xxjob
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2020-08-11 seata 配置中心使用 nacos