灵活定制化作业是 ElasticJob 3.x 版本的最重要设计变革。 新版本基于 Apache ShardingSphere 可插拔架构的设计理念,打造了全新作业 API。 意在使开发者能够更加便捷且相互隔离的方式拓展作业类型,打造 ElasticJob 作业的生态圈。
ElasticJob 提供了对作业的弹性伸缩、分布式治理等功能的同时,并未限定作业的类型。 它通过灵活的作业 API,将作业解耦为作业接口和执行器接口。 用户可以定制化全新的作业类型,诸如脚本执行、HTTP 服务执行(3.0.0-beta 提供)、大数据类作业、文件类作业等。 目前 ElasticJob 内置了简单作业、数据流作业和脚本执行作业,并且完全开放了扩展接口,开发者可以通过 SPI 的方式引入新的作业类型,并且可以便捷的回馈至社区。
ElasticJob 的作业可划分为基于 class 类型和基于 type 类型两种。
Class 类型的作业由开发者直接使用,需要由开发者实现该作业接口实现业务逻辑。典型代表:Simple 类型、Dataflow 类型。 Type 类型的作业只需提供类型名称即可,开发者无需实现该作业接口,而是通过外置配置的方式使用。典型代表:Script 类型、HTTP 类型。
用于执行用户定义的作业接口,通过 Java 的 SPI 机制织入 ElasticJob生态。