Bolt 协议基本使用

发布服务

使用 SOFARPC 发布一个 Bolt 协议的服务,只需要增加名称为 Bolt 的 Binding 即可,不同的使用方式添加 Bolt Binding 的方式如下:

XML

使用 XML 发布一个 Bolt 协议只需要在 <sofa:service> 标签下增加 <sofa:binding.bolt> 标签即可:

  1. <sofa:service ref="sampleService" interface="com.alipay.sofa.rpc.sample.SampleService">
  2. <sofa:binding.bolt/>
  3. </sofa:service>

Annotation

使用 Annotation 发布一个 Bolt 协议的服务只需要设置 @SofaServiceBindingbindingTypebolt 即可:

  1. @Service
  2. @SofaService(bindings = {@SofaServiceBinding(bindingType = "bolt")})
  3. public class SampleServiceImpl implements SampleService {
  4. }

Spring 环境下 API 方式

在 Spring 或者 Spring Boot 环境下发布一个 Bolt 协议的服务只需要往 ServiceParam 里面增加一个 BoltBindingParam 即可:

  1. ServiceParam serviceParam = new ServiceParam();
  2. serviceParam.setInterfaceType(SampleService.class); // 设置服务接口
  3. serviceParam.setInstance(new SampleServiceImpl()); // 设置服务接口的实现
  4. List<BindingParam> params = new ArrayList<BindingParam>();
  5. BindingParam serviceBindingParam = new BoltBindingParam();
  6. params.add(serviceBindingParam);
  7. serviceParam.setBindingParams(params);

非 Spring 环境下的 API 方式

在非 Spring 环境下使用 SOFARPC 的裸 API 提供 Bolt 协议的服务,只需要将 Protocol 为 Bolt 的 ServerConfig 设置给对应的 ProviderConfig

  1. RegistryConfig registryConfig = new RegistryConfig()
  2. .setProtocol("zookeeper")
  3. .setAddress("127.0.0.1:2181");
  4. // 新建一个协议为 Bolt 的 ServerConfig
  5. ServerConfig serverConfig = new ServerConfig()
  6. .setPort(8803)
  7. .setProtocol("bolt");
  8. ProviderConfig<SampleService> providerConfig = new ProviderConfig<SampleService>()
  9. .setInterfaceId(SampleService.class.getName())
  10. .setRef(new SampleServiceImpl())
  11. .setServer(serverConfig) // 将 ServerConfig 设置给 ProviderConfig,表示这个服务发布的协议为 Bolt。
  12. .setRegistry(registryConfig);
  13. providerConfig.export();

引用服务

使用 SOFARPC 引用一个 Bolt 服务,只需要增加名称为 Bolt 的 Binding 即可,不同的使用方式添加 Bolt Binding 的方式如下:

XML

使用 XML 引用一个 Bolt 协议的服务只需要在 <sofa:reference> 标签下增加 <sofa:binding.bolt> 标签即可:

  1. <sofa:reference id="sampleService" interface="com.alipay.sofa.rpc.sample.SampleService">
  2. <sofa:binding.bolt/>
  3. </sofa:reference>

Annotation

使用 Annotation 引用一个 Bolt 协议的服务只需要设置 @SofaReferenceBindingbindingTypebolt 即可:

  1. @SofaReference(binding = @SofaReferenceBinding(bindingType = "bolt"))
  2. private SampleService sampleService;

Spring 环境下 API 方式

在 Spring 或者 Spring Boot 环境下引用一个 Bolt 协议的服务只需要往 ReferenceParam 里面增加一个 BoltBindingParam 即可:

  1. ReferenceClient referenceClient = clientFactory.getClient(ReferenceClient.class);
  2. ReferenceParam<SampleService> referenceParam = new ReferenceParam<SampleService>();
  3. referenceParam.setInterfaceType(SampleService.class);
  4. BindingParam refBindingParam = new BoltBindingParam();
  5. referenceParam.setBindingParam(refBindingParam);

非 Spring 环境下的 API 方式

在非 Spring 环境下使用 SOFARPC 的裸 API 引用一个 Bolt 协议的服务,只需要设置 ConsumerConfig 的 Protocol 为 bolt 即可:

  1. ConsumerConfig<SampleService> consumerConfig = new ConsumerConfig<SampleService>()
  2. .setInterfaceId(SampleService.class.getName())
  3. .setRegistry(registryConfig)
  4. .setProtocol("bolt");
  5. SampleService sampleService = consumerConfig.refer();