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