全部产品
云市场

使用原生 API

更新时间:2020-01-07 19:03:48

原生 API 是 SOFARPC 底层核心的使用方式。大多数情况下,并不需要直接操作原生 API,在 SOFABoot 环境下,您可以参考 SOFARPC 进阶指南 直接使用 SOFARPC。但在非 SOFABoot 环境下,可能需要暂时使用原生 API 进行服务发布与引用。

定义接口

  1. public interface SampleService {
  2. String message();
  3. }

引用依赖

  1. <dependency>
  2. <groupId>com.alipay.sofa</groupId>
  3. <artifactId>sofa-rpc-enterprise-all</artifactId>
  4. <version>${rpc.enterprise.version}</version>
  5. </dependency>

具体版本信息,请使用技术支持团队推荐的 SOFABoot 版本中携带的 sofa-rpc-enterprise-all 版本号。

初始化配置

  1. System.setProperty("com.alipay.env", "shared");
  2. System.setProperty("com.alipay.instanceid", "xxx");
  3. System.setProperty("com.antcloud.antvip.endpoint", "xxx");
  4. System.setProperty("com.antcloud.mw.access", "xxx");
  5. System.setProperty("com.antcloud.mw.secret", "xxx");

其中,关于 com.alipay.instanceidcom.antcloud.antvip.endpointcom.antcloud.mw.accesscom.antcloud.mw.secret 参数的具体含义及对应值,参见 中间件全局配置项

设置当前应用信息

  1. ApplicationConfig appConfiguration = new ApplicationConfig();
  2. appConfiguration.setAppName("sofa2-rpc-client");

设置服务注册中心信息

  1. RegistryConfig registryConfig = new RegistryConfig();
  2. registryConfig.setProtocol("dsr");
  3. registryConfig.setSubscribe(true);
  4. registryConfig.setConnectTimeout(3000);

初始化服务运行容器

  1. ServerConfig serverConfig = new ServerConfig()
  2. .setPort(12200)
  3. .setProtocol("bolt");

ServerConfig 表示服务运行容器。如上示例声明了一个使用 12200 端口和 BOLT 协议的 server。

引用服务

  1. ConsumerConfig<SampleService> consumerConfig = new ConsumerConfig<SampleService>()
  2. .setInterfaceId(SampleService.class.getName())
  3. .setProtocol(protocol)
  4. .setApplication(appConfiguration);
  5. consumerConfig.setRegistry(registryConfig)
  6. .setConnectTimeout(3000)
  7. .setTimeout(3000);
  8. SampleService refer = consumerConfig.refer();
  9. //进行调用

发布服务

  1. ProviderConfig providerConfig = new ProviderConfig<SampleService>()
  2. .setInterfaceId(SampleService.class.getName())
  3. .setRef(new HelloServiceTimeOutImpl())
  4. .setServer(serverConfig)
  5. .setRegister(true)
  6. .setApplication(providerAconfig)
  7. .setRegistry(registryConfig);
  8. providerConfig.export();