turbo

Turbo插件开发指南

1. 概述

Turbo支持插件扩展功能,开发者可以通过编写插件实现自定义逻辑,而无需修改主框架代码。插件使用 SPI 机制进行加载,支持在运行时动态发现和加载。

插件目前支持应用场景包括:

步骤 1:创建插件项目

使用 Maven 构建插件项目:

mvn archetype:generate -DgroupId=com.example.plugin -DartifactId=MyPlugin

步骤 2:实现插件功能

示例:

public class MyPlugin implements IdGeneratorPlugin {
   @Override
   public String getName() {
      return "MyPluginName";
   }
   @Override
   public Boolean support() {
      return true;
   }
   @Override
   public Boolean init() {
      System.out.println("MyPlugin initialized");
      return true;
   }
   @Override
   public IdGenerator getIdGenerator() {
      return new MyDefinedIdGenerator();
   }
}

步骤 3:添加配置文件,指定加载插件类

src/main/resources/plugin.properties 中定义插件必要信息,如初始化脚本文件路径等:

turbo.plugin.init_sql.ParallelGatewayElementPlugin=sql/parallelGateway.sql

src/main/resources/META-INF/services/ 文件夹下创建扩展插件类型接口对应全路径路名文件,并指定插件实现类:

创建 src/main/resources/META-INF/services/com.didiglobal.turbo.engine.plugin.ElementPlugin 文件,并写入:

com.didiglobal.turbo.plugin.ParallelGatewayElementPlugin

步骤 4:测试插件功能


7. 插件相关配置

以下是我们希望插件开发者遵循的一些配置项规范

配置项 配置名称 示例 配置说明
turbo.plugin.support.${pluginName} 插件开关配置 turbo.plugin.support.ParallelGatewayElementPlugin=false 用于控制support方法的返回值,默认返回true
turbo.plugin.init_sql.${pluginName} 数据库初始化脚本路径 turbo.plugin.init_sql.ParallelGatewayElementPlugin=sql/parallelGateway.sql 用于指定初始化脚本位置,这个脚本应该是幂等的
turbo.plugin.element_type.${pluginName} 元素节点类型 turbo.plugin.element_type.ParallelGatewayElementPlugin=9 支持插件使用方自己去指定元素节点类型,避免多个插件使用相同的元素类型导致冲突