Dubbo 服务仅适用于 专有云。快速开始指导您注册并发布一个供移动端调用的 Dubbo 类型的 API 服务。整体过程分为六步:
在项目的主 pom.xml
文件中引入如下二方包(如原工程已经有依赖,请忽略)。其中 mobilegw-unify
系列依赖请使用最新版本,当前最新版本为 1.0.5.20200930
。
<!-- mobilegw unify dependency-->
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-spi-dubbo</artifactId>
<version>${the-lastest-version}</version>
</dependency>
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-spi-adapter</artifactId>
<version>${the-lastest-version}</version>
</dependency>
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-log</artifactId>
<version>${the-lastest-version}</version>
</dependency>
<dependency>
<groupId>com.alipay.hybirdpb</groupId>
<artifactId>classparser</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.69_noneautotype</version>
</dependency>
<!-- 如果使用了pb,请加入如下依赖-->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
<version>1.3.8.20160722</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
<version>1.3.8.20160722</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-api</artifactId>
<version>1.3.8.20160722</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-collectionschema</artifactId>
<version>1.3.8.20160722</version>
</dependency>
<!-- dubbo 使用 apache 最新版本-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.8</version>
</dependency>
按照业务需求,定义服务接口:com.alipay.xxxx.MockRpc
。
提供该接口的实现 com.alipay.xxxx.MockRpcImpl
。
在服务接口的方法上添加 @OperationType
注解,定义发布服务的接口名称。@OperationType
有三个参数成员,为便于维护,请填写完整:
组织.产品域.产品.子产品.操作
。定义该参数值时应尽量详细,否则一旦与其他业务方的 value 值重复,会导致无法注册服务。示例如下:
public interface MockRpc {
@OperationType(value="com.alipay.mock", name="DUBBO mock 接口", desc="复杂 mock 接口")
Resp mock(Req s);
@OperationType(value="com.alipay.mock2",name="xxx", desc="xxx")
String mock2(String s);
}
public static class Resp {
private String msg;
private int code;
// ignore getter & setter
}
public static class Req {
private String name;
private int age;
// ignore getter & setter
}
该步骤目的是将定义好的 RPC 服务,通过网关提供的 SPI
包,声明为对外提供服务的 API。需要如下 2 个参数:
您可以通过 Spring
或 Spring Boot
方式声明 API 服务。
在对应 bundle 的 Spring 配置文件中,声明上述服务的 Spring Bean。示例如下:
<bean id="mockRpc" class="com.alipay.gateway.spi.dubbo.test.MockRpcImpl"/>
在对应 bundle 的 Spring 配置文件中,声明 com.alipay.gateway.spi.dubbo.DubboServiceStarter
类型的 Spring Bean。DubboServiceStarter
会将所有带有 @OperationType
的 bean 通过 Dubbo 协议注册到指定的注册中心。示例如下:
<bean id="dubboServiceStarter" class="com.alipay.gateway.spi.dubbo.DubboServiceStarter">
<property name="registryUrl" value="${registry_url}"/>
<property name="appName" value="${app_name}"/>
</bean>
以注解的方式声明上述服务的 Spring Bean。示例如下:
@Service
public class MockRpcImpl implements MockRpc{
}
com.alipay.gateway.spi.dubbo.DubboServiceStarter
类型的 Spring Bean。DubboServiceStarter
会将所有带有 @OperationType
的 bean 通过 Dubbo 协议注册到指定的注册中心。示例如下:
@Configuration
public class DubboDemo {
@Bean(name="dubboServiceStarter")
public DubboServiceStarter dubboServiceStarter(){
DubboServiceStarter dubboServiceStarter = new DubboServiceStarter();
dubboServiceStarter.setAppName("${app_name}");
dubboServiceStarter.setRegistryUrl("${registry_url}");
return dubboServiceStarter;
}
}
进入移动网关管理页面。
选择 API 分组 选项卡进入 API 分组列表页,单击 创建 API 分组 按钮。
在弹出的对话框中填写表单信息。
单击 确定 按钮提交。
如需进一步完善 API 分组相关配置,请阅读 配置分组。
选择 API 管理 选项卡进入 API 列表页,单击 创建 API 按钮。
在弹出的对话框中,API 类型 选择 DUBBO,选择 API 分组,在拉取到的 operationType
列表中勾选需要的服务,单击 确认 按钮。
在 API 配置区域,单击 修改 按钮进行相应参数的编辑;修改完成后,单击 保存 按钮。
检查右上方开关,保证 API 服务处于 开通 状态。只有处于开通状态的 API 服务才能被调用。
相关信息请参见 API 测试。
相关信息请参见 代码生成。
完成上述几步操作,API 服务即可供客户端调用。有关客户端开发的更多信息,参见下列客户端开发指南:
在文档使用中是否遇到以下问题
更多建议
匿名提交