JobRunr 7.0 发布概述
JobRunr 7.0 和 JobRunr Pro 7.0 主要引入了对虚拟线程的支持,默认情况下启用,适用于运行在 JDK 21 上的应用程序。虚拟线程提升了并发性,减少了传统线程的开销,特别适用于 I/O 密集型任务,使 JobRunr 能够处理更多的并发任务。同时,JobRunr 7.0 保持了对 Java 8 的向后兼容性。JobRunr 7.1 作为维护版本,也支持 GraalVM 原生模式下的虚拟线程。
虚拟线程的自动检测与配置
JobRunr 7.0 能够自动检测应用程序是否运行在 JDK 21 上,并自动切换到虚拟线程,无需开发者手动配置。这种无缝集成提高了高 I/O 操作应用程序的吞吐量。然而,对于 CPU 密集型任务,传统平台线程可能表现更好,JobRunr 提供了配置选项,允许开发者根据应用需求调整线程使用。开发者可以通过应用属性或 JobRunr API 自定义虚拟线程设置,确保应用性能的最优化。
时间基于 UUID 的引入
JobRunr 7.0 从传统的随机 UUID 转向时间基于 UUID,后者是顺序的并包含时间组件。这种变化旨在提高数据库性能,因为时间基于 UUID 的序列性优化了 B 树结构,从而加快了数据插入和检索的速度,减少了磁盘上的索引大小,有助于缓存并减少 I/O 操作。
InMemoryStorageProvider 的增强
JobRunr 7.0 对 InMemoryStorageProvider 类进行了增强,特别是针对开发和测试用例。例如,减少了轮询间隔,从而加快了测试任务的处理速度。默认轮询间隔为 15 秒,但可以通过 BackgroundJobServer 的参数或相关框架的属性进行调整。
Recurring Job 注解的改进
@Recurring 注解从框架特定的包(如 Spring、Quarkus 和 Micronaut)移到了核心包中,以减少重复。此外,paused 和 scheduleJobsSkippedDuringDowntime 注解现在使用 enum 而不是 boolean,提供了更多的控制。
RedisStorageProvider 和 ElasticSearchStorageProvider 的弃用
由于使用率低和高维护成本,RedisStorageProvider 和 ElasticSearchStorageProvider 类将被弃用,JobRunr 7 将是这些提供程序的最后一个支持版本。
MongoDB 驱动程序的升级
对于使用 MongoDB 后端的用户,JobRunr 7.0 将数据库驱动程序升级到版本 5,这个版本不向后兼容,需要用户手动更新驱动程序版本。
未来展望
JobRunr 的创始人 Ronald Dehuysser 表示,JobRunr v7 是迄今为止最好的版本,提供了显著的性能提升。未来,JobRunr v8 将引入碳感知作业调度功能,旨在优化可再生能源的使用并减少 CO2 排放。
总结
JobRunr 7.0 通过引入虚拟线程和时间基于 UUID,提供了显著的性能提升。开发者应注意到一些重大变化,并参考发布博客和网络研讨会以了解详细更改。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。