前置条件

引入接口定义依赖

要引用一个 RPC 服务,用户需要知道 RPC 服务的提供方所发布的接口是什么(如果发布的服务有 unique-id,还需要知道 unique-id),这就要求服务提供方将发布的接口所在的 JAR 包及依赖信息传到 Maven 仓库,以便服务引用方能够引用服务提供方所发布的 RPC 服务。如果是本地运行,需要在 sofaboot-rpc-server 工程目录运行 mvn clean install,将接口依赖 JAR 安装到本地仓库。

若非本地运行,需要将接口依赖 JAR 上传到对应的 Maven 仓库。

获得 RPC 服务的发布接口后,在 sofaboot-rpc-client 工程下的主 pom 中添加所引用的 RPC 服务的接口依赖信息,示例如下:

com.alipay.APPNAME

APPNAME-facade

1.0-SNAPSHOT

说明

此处客户端和服务端的应用名称均命名为 APPNAME,仅供学习使用。在实际环境中,两个应用名称不可完全一样。

引用 RPC 服务

在配置文件 META-INF/APPNAME/APPNAME-web.xml 中,根据接口配置引用一个 RPC 服务:

此处的 RPC 引用也是一个 bean,其 bean id 为 sampleRpcService。

将引用的 RPC 服务注入 Controller

注意

这一步是为了演示方便,实现用户通过浏览器或者其他方式访问一个 rest 接口,触发调用所引用的服务,并调用到服务端。实际开发中,并不需要注入 Controller 这一步。

本教程将这个 RPC 服务注入到了 com.alipay.APPNAME.web.springrest.RpcTestController 中,示例如下:@RestController

@RequestMapping("/rpc")

public class RpcTestController{

@Autowired

private SampleService sampleRpcService;

@RequestMapping("/hello")

String rpcUniqueAndTimeout(){

String rpcResult =this.sampleRpcService.message();

return rpcResult;

}

}

本地编译

sofaboot-rpc-client 是一个 SOFABoot Web 工程。依次执行以下命令以进行本地编译并启动 RPC client:将客户端和服务端 config/application.properties 中的 run.mode 均配置为 DEV,即 run.mode=DEV。

在工程根目录下执行:mvn clean install,生成可执行文件 target/APPNAME-web-1.0-SNAPSHOT-executable.jar。

在工程根目录下执行:java -jar ./target/APPNAME-web-1.0-SNAPSHOT-executable.jar 。如果控制台输出如下信息,则表示 WEB 容器启动成功:16:11:13.625 INFO org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer-Tomcat started on port(s):8080(http)

如果输出错误信息,请在解决问题后重试以上步骤。

测试 RPC 服务启动 RPC 服务端 sofaboot-rpc-server 及客户端 sofaboot-rpc-client。

在浏览器中访问Hello,ServiceSOFABoot

云端运行

SOFARPC 在本地只能通过直连方式进行体验。只有在云端发布成功后,通过 SOFAStack 控制台,才能进行服务管控和治理。具体云端发布步骤,请参考下述信息:对于应用的整体发布流程,建议参考 技术栈使用指南 中的

应用的详细发布步骤,建议根据发布方式,参考下述文档:经典应用服务之

容器应用服务之

说明

云端发布时,请务必在 application.properties 中配置以下属性:run.mode=NORMAL

com.alipay.env=shared

com.alipay.instanceid=

com.antcloud.antvip.endpoint=

com.antcloud.mw.access=

com.antcloud.mw.secret=

运行模式和运行环境的值为默认固定值。上述参数的具体含义请参见

日志查看

查看 sofaboot-rpc-client 工程引用 RPC 服务启动日志:查看日志目录 logs/rpc/rpc-registry.log,内容参考如下:2016-12-1715:45:50,340 INFO main RPC-REGISTRY -订阅 RPC 服务:服务名[com.alipay.APPNAME.facade.SampleService:1.0@DEFAULT]

以上日志说明 RPC 服务引用成功,如果发现引用 RPC 服务失败,请重点关注日志目录 logs 下的所有 common-error.log。

有关日志的详细信息,请参考