Java SDK

更新时间:
复制为 MD 格式

本文记录 SchedulerX Java SDK 各版本的功能变更,包括新增功能、功能优化和问题修复。

2026 年

版本

变更类型

功能描述

发布时间

相关文档

1.13.5

新功能

second_delay 任务支持优雅下线。

2026 年 03 月 20 日

新功能

脚本任务支持工作流上下游数据传递。

1.13.4

优化

优化 K8s 应用模式下 CPU 采集兼容 cgroup v2 模式。

2026 年 02 月 13 日

1.13.3

优化

优化 Spring 任务兼容 Spring 7.X 版本。

2026 年 01 月 15 日

2025 年

版本

变更类型

功能描述

发布时间

相关文档

1.13.1

问题修复

  • 修复 Spring 父子容器场景下心跳注册提前上报的问题。

  • 修复早期版本升级至新版 SDK 过程中 Map 任务出现停止异常的问题。

2025 年 07 月 28 日

1.13.0

新功能

支持链路加密:专业版应用,服务端和客户端之间通信,敏感数据会进行加密。

2025 年 06 月 18 日

1.12.7

优化

  • 重构脚本任务占位符逻辑,解决 Spring 冲突导致占位符替换失败的问题。

  • 升级 Spring 版本到 5.3.31,修复 Spring 安全漏洞。

2025 年 05 月 29 日

问题修复

  • 修复广播任务和分片任务,第 0 号分片不支持子任务失败自动重试的问题。

  • 修复可视化 MapReduce 任务,手动重跑,contexttriggerType 不对的问题。

1.12.5

优化

优化 Spring 任务兼容存在其他组件实现 TaskScheduler 的场景。

2025 年 02 月 08 日

1.12.3

新功能

  • 支持配置 SDK 日志目录。

    • 启动命令添加:-Dschedulerx.log.path=日志根路径,最终路径({schedulerx.log.path}/logs/schedulerx)。

  • 支持 SDK 框架日志 logback 自定义配置覆盖,且支持日志输出至自有日志服务(SLS)仓库。

2025 年 01 月 03 日

优化

  • 优化 Spring 任务兼容支持 Spring 6.x 版本。

  • 修复业务 JDBC 未配置驱动类时出现 H2 DriverClass NotFound 的异常问题。

  • 修复 Map 任务状态检查并发问题导致任务失败结束的问题。

2024 年

版本

变更类型

功能描述

发布时间

相关文档

1.12.2

优化

  • 修复可视化 MapReduce 任务安全漏洞。

  • 修复部分 akka 接口安全漏洞。

2024 年 11 月 20 日

1.12.1

新功能

  • http agent 任务支持自定义线程池大小。

  • 支持自定义 schedulerx 日志输出 logger。

  • 新增 @SchedulerX 注解,可以和 Spring @Scheduled 注解同时生效,接管 Spring 部分定时任务。

2024 年 10 月 12 日

优化

  • 移除 fastjson 包,解决安全漏洞。

1.11.5

优化

  • 优化 SLS 日志的日志输出。

  • 修复多个应用分组读取配置异常时,导致心跳上报互相影响的问题。

  • 优化降低心跳超时异常时,容错重试次数。

2024 年 06 月 17 日

1.11.4

新功能

JobContext 可以获取工作流 ID。

2024 年 03 月 20 日

JobContext参数说明

优化

  • SDK 瘦身,去除无用的依赖。

  • 去除 SDK 无用的 Log4j2.xml,防止日志配置冲突。

1.11.1

新功能

支持通过环境变量获取任务参数。

2024 年 02 月 20 日

新功能

支持通过应用隔离。

问题修复

  • 修复 Netty 的安全漏洞。

  • 修复 Logback 的安全漏洞。

  • 修复日志冲突导致 SchedulerX 框架日志无法显示的问题。

1.10.14

新功能

在业务应用停机之前,等待当前正在执行的任务完成后,再安全地关闭应用,实现发布重启过程中业务无损。

2024 年 01 月 02 日

如何将任务调度应用优雅下线

新功能

支持配置子任务分发速率。

新功能

支持配置 User 和 Password。

  • spring.schedulerx2.h2DatabaseUser:设置 H2 内置数据库用户。

  • spring.schedulerx2.h2DatabasePassword:设置 H2 内置数据库密码。

Spring Boot应用接入SchedulerX

优化

支持按应用分组隔离。

优化

支持按 Worker IP 排序分发。

优化

  • 支持 Spring 4 的低版本。

  • Spring 任务定时方法支持任意返回值。

Spring任务

优化

  • 避免 Spring 容器重复初始化时,心跳线程被重复创建。

  • Akka Actor 意外终止时,支持自动重启。

问题修复

  • 修复 Spring 读取不到 Processor Bean 后,直接返回异常的问题。

  • 修复 1.10.x 引入的 Map 任务运行卡住的问题。

  • 修复广播任务的 preProcess 执行异常后,任务实例无法结束的问题。

  • 修复任务运行实例异常终止时,由于残留线程导致任务运行超时报警的问题。

  • 修复共享线程池模式下,应用刚启动后可能出现任务状态丢失卡住问题。

  • 修复多个应用分组或 appKey 中存在特殊字符时接入配置加载异常的问题。

  • 修复无法使用可视化 Map 任务的专业版相关功能问题。

2023 年

版本

变更类型

功能描述

发布时间

相关文档

1.9.6

新功能

支持标准模板和自定义模板。

  • 标准模板:可自主修改镜像、镜像拉取策略。

  • 自定义模板:兼容 k8s 原生内容(schedulerx2-plugin-kubernetes 需升级到 1.0.5 及以上版本)。

2023 年 07 月 04 日

新功能

Map 任务在分发时支持从随机位置开始,需配置参数(默认 false):spring.schedulerx2.mapMasterDispatchRandom=true

新功能

Shell 任务支持通用系统内置参数。

  • schedule.timestamp(执行调度时间)

  • data.timestamp(调度数据时间)

1.8.13

新功能

执行线程模型调整。

  • 模型切换为非共享线程池模式。

  • 共享线程池模型下共享线程池参数。

    • spring.schedulerx2.shareContainerPool=true:开启共享线程池。

    • spring.schedulerx2.sharePoolSize=32:共享线程池全局大小,默认:64。

    • spring.schedulerx2.sharePoolQueueSize=20480:共享线程池队列大小,默认:Integer.MAX_VALUE。

2023 年 09 月 08 日

新功能

相关参数如下所示。

  • spring.schedulerx2.broadcastMasterExecEnable=false:主节点是否参与广播任务执行,默认 true。

  • spring.schedulerx2.broadcastDispatchRetryTimes=5:广播分发尝试次数。

优化

优化 Map 任务在应用大规模发布和缩容过程中的性能。

优化

优化应用启动时心跳汇报的时间点,防止业务容器启动过长导致任务处理长耗时。

问题修复

  • 修复共享线程池模式下,任务长时间运行后被拒绝问题。

  • 修复任务状态汇报过程偶现的空指针日志问题。

  • 修复 1.7.x 版本后出现广播任务线程持续增长问题。

  • 修复共享线程池模式下存在的内存资源泄漏问题。

  • 修复动态代理对象无法执行 Reduce 问题。

  • 修复秒级别任务执行应答合并丢失问题。

  • 修复 Diamond 读取环境地址异常问题。

  • 修复对接公有云时存在的心跳超时过长问题。

  • 修复 log4j 日志格式告警。

  • 修复单机任务分发异常情况下会卡住的问题。

  • 修复新版本不兼容原先 ClassName:BeanId 的配置模式。

  • 修改 Logback 单机日志最大文件限制。

2022 年

版本

变更类型

功能描述

发布时间

相关文档

1.7.10

新功能

  • 支持 Spring 原生定时任务集成。

  • 支持全链路追踪能力集成。

2022 年 08 月 30 日

优化

客户端停机下线快速响应。

问题修复

  • 修复高频任务大量 SLS 日志输出的内存溢出问题。

  • 修复大量秒级别任务集中运行时出现的延迟问题。

1.6.1

问题修复

修复秒级别广播检测线程 CPU 偏高的问题。

2022 年 08 月 03 日

1.6.0

新功能

支持 K8s Job 调度能力集成。

2022 年 06 月 24 日

优化

  • Processor 处理类兼容配置 Spring AOP 代理。

  • 对可用 Worker 监控定时器偶而出现的 ERROR 日志信息内容进行优化。

  • second_delay 任务支持日志采集。

1.5.1.1

新功能

支持开启或关闭日志服务动态生效。

2022 年 04 月 19 日

问题修复

  • 修复 1.5.0.x 版本不兼容 Spring Boot 2.0.3 的问题。

  • 修复 1.5.0.x 版本可能存在的 JobSyncService Bean 初始化报错问题。

1.5.0.2

新功能

支持 SpringBoot 声明式任务定义。命名空间、应用、任务、报警等都可以通过配置文件声明,方便管理应用下的任务。文件声明支持修改,可在任何环境一键启动应用。

2022 年 04 月 01 日

Spring Cloud Alibaba 定时任务

可视化 MapReduce 任务(原并行计算),支持子任务级别列表、日志、重跑;支持为子任务自定义标签并且通过标签搜索子任务。

企业级分布式批处理方案

1.4.2

新功能

分布式任务调度系统 SchedulerX 2.0 的日志服务,无需修改代码,只需增加一个 Log4j 或 Logback 的配置,即可在控制台查看每次任务调度(包括分布式任务)的业务日志。

2022 年 03 月 07 日

如何接入日志服务

控制台可以直接查看任务运行的堆栈,方便排查任务卡住的问题,使用时需将客户端升级到 1.4.0 及以上版本。

支持 ElasticJob 开发的执行器对接。

1.3.4

新功能

  • 支持 DataWorks 任务。

  • 新增 schedulerx2-plugin-xxljob,兼容 Xxl-job 接口。

2022 年 01 月 06 日

2021 年

版本

变更类型

功能描述

发布时间

相关文档

1.3.2

优化

调整默认依赖的 Log4j2 至 2.15.0 版本。

2021 年 12 月 15 日

1.3.0.3

新功能

秒级别单机增强:单机秒级别循环支持在不用的实例间分发切换执行,SpringBoot 应用配置参数如下:spring.schedulerx2.enableSecondDelayStandaloneDispatch=true(默认 false)。

2021 年 11 月 26 日

优化

客户端停机下线快速响应。

问题修复

  • 修复“客户端对接多个应用分组时运行实例心跳只上报给指定的调度服务”的问题。

  • 修复“秒级别任务偶发的线程异常中断和空指针异常”的问题。

  • 修复“SchedulerX 客户端与 Spring Cloud 集成时会出现任务运行锁死超时”的兼容问题。

  • 修复“广播任务在并发情况下出现执行中断”的问题。

  • 修复“秒级别任务在执行过程中未能定时刷新 Worker 实例列表”的问题。

  • 修复“秒级别广播任务执行停止指令后,扫描线程未结束”的问题。

  • 修复“秒级别广播任务场景下,大批量 Worker 按批次发布过程中任务有概率卡住”的问题。

1.2.9.1

问题修复

修复 worker 与 Spring Cloud 集成时出现任务运行锁死超时。

2021 年 08 月 30 日

1.2.9

新功能

秒级别单机增强:单机秒级别循环支持在不同的实例间分发切换执行,配置参数:spring.schedulerx2.enableSecondDelayStandaloneDispatch=true(默认 false)。

2021 年 08 月 27 日

问题修复

广播任务在并发情况下出现中断信号,以及 worker 实例列表未更新。

1.2.8.3

问题修复

修复秒级别广播任务执行停止指令后扫描线程未结束的问题。

2021 年 08 月 13 日

1.2.8.2

问题修复

秒级别广播任务大批量 worker 按批次发布过程中任务运行有概率卡住。

2021 年 08 月 06 日

1.2.8

新功能

  • 广播任务增强:postProcess 可以拿到所有机器执行的状态 JobContext.getTaskStatuses() 和执行结果 JobContext.getTaskResults()

  • 广播分片模型:广播任务可以通过 JobContext 获取 shardingNumsharingId,通过自身机器的 index 进行数据分布式处理。

  • 分片模型增强:JobContext 可以从 shardingNum 获取所有分片数量。

2021 年 06 月 23 日

1.2.7

新功能

新增开关,可以关闭的 failover 功能。

2021 年 04 月 28 日

问题修复

  • 修复心跳探活失败,可能会导致 socket 泄漏的问题。

  • 修复 MapTask Master 在子任务较多的情况下,可能会频繁误 failover 的问题。

1.2.5.2

新功能

秒级别任务间隔支持到毫秒级别。

2021 年 04 月 08 日

优化

  • MapReduce 模型,root Task 固定在 master node 执行,方便排查问题。

  • 不强依赖 log4j2,如果用户使用的是 logback,可以把 log4j 和 log4j2 依赖移除。

1.2.4.3

新功能

  • 广播任务运行中支持进度汇报。

  • 心跳日志可以通过开关关闭。

2021 年 01 月 21 日

问题修复

  • 心跳间隔调整为 10 秒。

  • 修复广播任务可能卡住严重问题。

2020 年

版本

变更类型

功能描述

发布时间

相关文档

1.2.3.1

优化

优化客户端负载高会导致任务调度长连接打挂,导致任务无法继续调度的问题。

2020 年 12 月 16 日

1.2.2.2

新功能

  • 支持容器内采集容器真实 CPU 使用率。需要增加配置,以 starter 为例:spring.schedulerx2.enableCgroupMetrics=true,spring.schedulerx2.cgroupPathPrefix=/sys/fs/cgroup/cpu/(非必填,如果容器里有"/sys/fs/cgroup/cpu/"这个路径,可以不用配置,否则修改为真实的 cgroup 路径)。

  • 支持标签。客户端启动可以自定义打标签,以 starter 为例:spring.schedulerx2.labels=xxx。任务管理中可以指定机器,可以指定任务跑在某个标签的实例上。适用场景灰度、单元化等。

2020 年 12 月 10 日

优化

  • 客户端心跳线程和 akka 核心线程独立出来,保证业务繁忙不会影响心跳探活。

  • 将 h2 从 shade 中移除。shade h2 可能会导致 MySQL 驱动加载失败。

1.2.1.2

新功能

  • 支持共享 ContainerPool,客户端所有任务可以共享同一个线程池,大量任务高并发调度情况下大大提高客户端性能和稳定性。

  • Shade Scala,解决 scala 冲突的问题。

  • 公有云支持 appKey 鉴权。

  • MapReduce 模型增强,支持配置是否所有子任务成功才执行 Reduce 方法。

  • 客户端支持 -Dschedulerx.appKey 设置 appKey

2020 年 10 月 20 日

优化

优化客户端 Netty 线程池。

问题修复

  • 修复广播任务可能会卡住的问题。

  • 修复 SLS 功能的 AccessKey ID 或 AccessKey Secret 泄漏的问题。

1.2.0.2

新功能

  • 支持一个应用 10 万+任务(只有公有云支持)。

  • 新增客户端日志开关,默认开启。

  • OpenAPI 创建任务,支持设置状态。

  • 去除 diamond-client、logger.API 和 log4j 依赖。

2020 年 08 月 19 日

问题修复

  • 修复客户端断网演练会和服务端失联的问题。

  • EDAS 应用无法读取 AccessKey Secret。

1.1.4.RELEASE

新功能

  • 支持自建 NameSpace。

  • 支持初始化多个 SchedulerxWorker。

  • MapReduce 模型增强

  • 子任务失败,也能执行 Reduce。

  • JobContext.getTaskStatuses 可以判断每个 Task 的状态,Map<Long, TaskStatus> 结构体 Key 是 TaskId,Value 是 Task 的状态。

2020 年 05 月 15 日

问题修复

  • ProcessResult,result 为空,会导致空指针。

  • thread-dispatcher-delivery 挂起会导致任务卡住。

1.1.2.RELEASE

新功能

shade protobuf and netty from akka,解决接入 90%以上 JAR 包冲突。

2020 年 02 月 10 日

优化

AppKeys 不支持多分组。

2019 年

版本

变更类型

功能描述

发布时间

相关文档

1.1.0

新功能

2019 年 12 月 17 日

优化

  • Server 端性能优化,将和客户端通信同步改成异步,并优化了 akka 默认的 dispatcher 配置。

  • 使用 1.1.0 版本客户端,心跳性能优化提高 3 倍。

  • 前端任务管理列表重新设计,可以看到更多信息。

问题修复

  • 修复分布式拉模型,全局子任务可能不起作用。

  • 修复隔离单元环境,如果没有配置 Domain,可能还是会启动失败。

1.0.9

新功能

  • 增加 BlockAppStart 配置。表示 Schedulerx 启动失败是否 block 应用程序启动,默认 true

  • 新增查询工作流运行状态接口。接口为 GetWorkflowInstanceRequest

  • JobContext 上下文新增 jobName 字段。这样用户可以在运行期间获取到任务名称。

2019 年 11 月 28 日

问题修复

  • 通过 Hessian 反序列化 BigDecimal 为 0。

  • 通过 Hessian 反序列化 LocalDateTime 报错。

  • 修复指定机器功能问题。任务运行超过一定时间子任务会下发到未指定机器上。

  • 客户端 springContext.getBeanAnnotationConfigApplicationContext has not been refreshed yet 异常。

  • 修复任务实现类配置错误的情况下会触发 Spring Boot 的 ServeletWebServer 停止的逻辑,导致业务进程继续运行,但是 Web 服务被 shutdown 问题。

  • 修复系统启动变量 user.dir='/',任务会卡住的问题。

  • 客户端 springContext.getBeanAnnotationConfigApplicationContext has been closed already 异常。

  • 客户端生成的 workerId 存在小概率重复冲突的问题,造成任务触发到非本应用的机器上。

  • Spring 应用不能自定义 class loader

  • 秒级别任务广播执行计数器显示不对。

  • 秒级别任务,jobContext.getScheduleTime 没有跟着循环更新。

1.0.8

新功能

  • 【重要】重构 JobProcessor.postProcess 接口,增加 ProcessResult 返回值,之前用到 postProcess 接口需要改代码。

  • 广播执行增强,BroadcastJobProcessor 支持 preProcesspostProcesspreProcess 会在所有机器执行 process 之前执行一次,postProcess 会在所有机器执行 process 后执行一次。

  • JobContext.getTaskAttempt 可以获取当前子任务重试次数。

  • 客户端支持自定义监听端口,例如 SchedulerxWorker.setPort

  • Java 任务可以实现 JobProcessor,不必须继承 JavaProcessor

2019 年 08 月 06 日

问题修复

  • 修复 TaskId=1 的子任务不支持子任务自动重试的 bug。

  • 分布式任务,根任务失败,无法看到失败原因。

  • 并行任务子任务列表不能重试子任务。

1.0.6-compatible

优化

兼容 schedulerx1.0(DTS) 接口的兼容版本。不支持同时依赖 schedulerx-clientschedulerx-worker 两个包,只能依赖 schedulerx-worker 一个包,即需要把 DTS 所有任务迁移到 SchedulerX 2.0。

2019 年 07 月 02 日

1.0.6

新功能

  • 新增部分包的 shade: aliyun-log, commons-validator, gson, fastjson, guava, commons-collections

  • 通过 ProcessResult(false, errorMsg) 返回,前端日志也能看到 errorMsg

优化

  • 优化 at-least-once-delivery 性能。

  • 高负载场景下,消息重复发送会造成秒级任务卡住或应用线程被 Interrupt。

2019 年 07 月 02 日

说明

该版本控制台显示版本号为 1.0.4 与 Maven 版本号不一致,请知晓。

问题修复

  • 广播任务卡主问题。

  • 秒级任务卡主问题。

  • at-least-once-delivery 可能会导致子任务状态无限重试。

  • logcollector 初始化失败,异常抛出来,启动失败。

  • DB 清理工作流任务实例,导致工作流无法恢复调度问题。

  • Spring 方式启动,不支持 kill。

1.0.3

新功能

  • MapReduce 模型支持返回所有子任务的结果,由 Reduce 处理。

  • 分布式模型支持拉模型,解决因为单机性能引起的木桶效应,支持动态扩容拉子任务。

  • 拉模型支持全局子任务并发度,可以进行限流。

  • JobContext 增加 wfInstanceId

  • 客户端启动失败抛出异常,堵塞 JVM 启动,尽早发现问题。

  • 客户端启动时会打印 mvn 依赖 JAR 的版本和路径,帮助排查 JAR 包冲突。

  • 分布式模型子任务详情,增加队列维度,可以看到每台机器缓存的子任务队列。

2019 年 06 月 06 日

问题修复

  • Worker 因为 server 负载高被误 guarantined,可以自动恢复,无需重启客户端。

  • 分布式模型子任务详情,运行中可以真实显示每台机器正在运行的子任务数。

  • Master 节点挂了,server 会负责清理 slave 节点的资源,防止内存泄漏。

1.0.0

新功能

  • 支持 crontabfixed_rate 表达式进行周期性定时调度。

  • 支持工作流调度,进行流程编排。

  • 支持 second_delay 表达式进行秒级别调度。

  • 支持 Java、Shell、Python、Go 任务类型。

  • 支持单机执行、广播执行、并行计算、内存网格、网格计算。

  • 支持 Map 和 MapReduce 分布式编程模型。

  • 支持任务实例级别和子任务级别的失败自动重试(默认不重试)。

  • 支持数据时间和重刷数据。

2019 年 04 月 30 日