最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
[059][调度模块]配置驱动的任务仓库 – 从 YAML 加载任务
时间:2026-08-20 10:45:50 编辑:袖梨 来源:一聚教程网
[059][调度模块]配置驱动的任务仓库 – 从 YAML 加载任务的重点在于把前置条件、操作顺序和容易误判的地方分清楚。
[059][调度模块]配置驱动的任务仓库 – 从 YAML 加载任务
本文章代码: gitee , gitcode , github
![[059][调度模块]配置驱动的任务仓库 – 从 YAML 加载任务](https://img.111cn.net/uploads/20260820/img_6a866a5ddc44130.webp)
摘要
为了方便运维和快速配置,框架支持通过 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<ChangeStatusEventConsumer> consumers) { return new ScheduleTaskManager(repository, consumers.orderedStream().collect(Collectors.toList()));}} Spring Boot 自动配置将 YamlTaskRepository 作为默认 TaskRepository。 ScheduleTaskManager 初始化时会调用 taskRepository.findAll() 加载所有任务并逐一 addTask。 4. 运维价值
声明式配置:无需代码修改即可调整任务 cron、开关状态、限流参数。 可替换性:通过@ConditionalOnMissingBean 允许用户自定义 TaskRepository(如从数据库或配置中心读取)。
相关文章
- 大学生有必要考计算机一级吗?计算机一级有意义吗? 08-20
- 小米路由器网址黑名单规则详解(小米路由器网址黑名单规则是什么) 08-20
- html标签属性汇总!你都知道吗? 08-20
- 计算机二级考试时间如何安排?什么时候可以报名? 08-20
- 常用编程专业术语!程序员必备技能! 08-20
- 怎样学习编程?6年开发老鸟告诉你! 08-20