调度模块任务仓库配置驱动设计:从YAML加载任务
时间:2026-08-12 | 作者:极客少年 | 阅读:0[059][调度模块]配置驱动的任务仓库 – 从 YAML 加载任务
本文章代码: gitee , gitcode , github
摘要
为了让运维更省事、配置更高效,框架提供了通过 application.yml 声明定时任务的能力。
YamlTaskRepository 会把这些配置解析成 YamlTask 对象,并对外提供完整的增删改查接口。
接下来重点拆解配置结构、加载流程,以及它与 ScheduleTaskManager 之间的衔接方式。
1. 配置结构
tutorials4j:schedule:default-execution:initial-delay: 30s # 默认初始延迟max-failure-count: 3 # 默认最大失败次数tasks:syncOrderTask:class-simple-name: orderSyncRunnercron: "0 0/5 * * * "enabled: truedescription: "同步订单"metadata:source: "mysql"execution:max-execution-count: 100due-date: "2025-12-31T23:59:59Z"# 更多任务...
TaskOptions 映射单个任务配置。
TaskExecutionOptions 可覆盖全局默认值。
YamlTask.of(TaskOptions) 负责将配置转换为领域对象 YamlTask。
2. YamlTaskRepository 初始化
public YamlTaskRepository(ScheduleProperties properties) { properties.getTasks().forEach((name, opts) -> { if (!opts.validate()) throw new IllegalArgumentException(...);YamlTask task = YamlTask.of(opts);task.setName(name);taskMap.put(name, task);});}
构造函数中会完成解析,并存入 ConcurrentHashMap。
这套实现支持后续运行时增删改,包括 create、update、delete。
不过默认实现仅做内存操作,后续也可以替换为数据库版本。
3. 与调度器的集成
@Configurationpublic class ScheduleConfiguration { @Bean@ConditionalOnMissingBeanTaskRepository> yamlTaskRepository(ScheduleProperties properties) { return new YamlTaskRepository(properties);}@BeanScheduleTaskManager scheduleTaskManager(TaskRepository> repository,ObjectProvider consumers) { return new ScheduleTaskManager(repository, consumers.orderedStream().collect(Collectors.toList()));}}
Spring Boot 自动配置会将 YamlTaskRepository 作为默认 TaskRepository。
ScheduleTaskManager 初始化时,会调用 taskRepository.findAll() 加载所有任务。
加载完成后,再逐一执行 addTask。
4. 运维价值
- 声明式配置:无需代码修改,即可调整任务 cron、开关状态、限流参数。
-
可替换性:通过
@ConditionalOnMissingBean允许用户自定义TaskRepository,如从数据库或配置中心读取。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Akka 实战:测试驱动开发 TDD 与 Actor 测试策略
- 时间:2026-08-27
-
- AMD显卡驱动降级教程是否需要卸载当前驱动
- 时间:2026-08-23
-
- 鼠标DPI调整方法详解:是否需要驱动软件支持
- 时间:2026-08-23
-
- AMD显卡安装驱动详细步骤与常见问题解答
- 时间:2026-08-23
-
- 鼠标指针消失的解决方法与驱动问题排查
- 时间:2026-08-23
-
- 微软MDASH安全系统实测:21个漏洞全中零误报,超越GPT-5.5
- 时间:2026-08-23
-
- AMD显卡驱动如何回退到旧版本
- 时间:2026-08-23
-
- 函数式事件驱动架构中带副作用的数据流设计
- 时间:2026-08-20
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
![调度模块任务仓库配置驱动设计:从YAML加载任务_wishdown.com [059][调度模块]配置驱动的任务仓库 – 从 YAML 加载任务](https://img.wishdown.com/upload/news/20260812bd0f189daf777c5ed10845959008e275.webp)