Skip to content
shanhm1991 edited this page Nov 3, 2024 · 7 revisions
  • spring-fom

一个轻量级的任务管理,主要针对定时任务,相对Spring Schedule提供了更多的场景支持

  • 依赖
<dependency>
    <groupId>com.cowave.commons</groupId>
    <artifactId>spring-fom</artifactId>
    <version>2.7.2</version>
</dependency>
  • 主要特性
1. 支持常用的定时策略:cron | fixedRate | fixedDelay
2. 支持批任务
实现接口 ScheduleFactory 可以创建批任务,通过 @Scheduled 可以指定多个任务方法;
实现接口 CompleteHandler 可以自定义批任务结束处理;
3. 支持任务超时检测
通过 taskOverTime 可以设置任务超时时间,通过 detectTimeoutOnEachTask 可以设置是对整体还是单个任务计算超时;
实现接口 TaskCancelHandler 可以自定义任务超时的取消处理,默认进行 Interrupt 中断;
4. 支持任务冲突检测
任务有一个id,开启 enableTaskConflict 后,如果提交任务时发现已经存在对应id的任务,且还在运行,则忽略本次任务;
5. 支持实时监控管理:http://[ip]:[port]/[context-path]/fom
5.1. 可以实时查看定时器状态、任务线程堆栈、以及执行统计等信息
5.2. 可以实时启动 / 终止定时器
实现接口 TaskCancelHandler 可以自定义定时器终止时任务的取消处理,默认通过 Interrupt 中断
实现接口 TerminateHandler 可以自定义定时器终止时的处理,比如清理释放资源
5.3. 可以实时触发执行任务,比如当定时任务未到执行时机时,可以手动触发使其立即执行
实时触发任务支持两种策略:如果任务正在执行则直接忽略(默认),或者等待本轮执行完成后立即再重新执行
5.4. 可以实时修改任务配置,支持注入属性,也做了本地持久化,这样重启后修改不会丢失
  • 相关配置
任务配置:@Fom 默认值: 说明: 生效:
cron null cron计划 下轮任务执行
fixedRate 0 距离上次任务开始的时间(毫秒) 下轮任务执行
fixedDelay 0 距离上次任务结束的时间(毫秒) 下轮任务执行
enable true 是否在加载时启动(startup) 任务重启
execOnLoad false 是否在启动后立即执行 任务重启
initialDelay 0 任务在启动后首次执行的延时时间(毫秒) 下轮任务执行
deadTime 0 任务截止时间,超过截止时间后任务不再执行 立即生效
threadCore 1 核心线程数,如果设置时core > max,则将max置为core 立即生效
threadMax 1 最大线程数,如果设置时max < core,则将core置为max 立即生效
threadAliveTime 10 线程最大空闲时间(毫秒) 立即生效
queueSize 256 任务队列长度 任务重启
taskOverTime 0 任务超时时间(毫秒) 下轮任务执行
enableTaskConflict false 是否检测任务冲突(根据任务id) 任务重启
detectTimeoutOnEachTask true 是否针对每个任务单独检测超时 下轮任务执行
ignoreExecRequestWhenRunning true Running状态时,是否忽略触发执行请求 立即生效
remark null 备注说明 立即生效
启动开关:@EnableFom 默认值: 说明:
enableFomView true 是否启用管理界面
环境变量: 默认值: 说明:
spring.fom.cache.type file 配置持久化方式,暂时只有本地文件保存
spring.fom.cache.history false 是否保存历史配置修改,默认只保存最新配置
spring.fom.cache.file.path cache/schedule 保存文件路径
  • 任务管理

任务列表

20200115 1

任务配置

20200115 2

任务统计

20200115 3

任务执行中的堆栈

20200115 4

Clone this wiki locally