本文介绍如何发布和引用 Bolt 协议服务。
发布服务
使用 SOFARPC 发布一个 Bolt 协议的服务,只需要增加名称为 Bolt 的 Binding 即可,不同的使用方式添加 Bolt Binding 的方式如下:
XML
使用 XML 发布一个 Bolt 协议只需在
<sofa:service>
标签下增加<sofa:binding.bolt>
标签。<sofa:service ref="sampleService" interface="com.alipay.sofa.rpc.sample.SampleService"> <sofa:binding.bolt/> </sofa:service>
Annotation
使用 Annotation 发布一个 Bolt 协议的服务只需设置
@SofaServiceBinding
的bindingType
为bolt
。@Service @SofaService(bindings ={@SofaServiceBinding(bindingType ="bolt")}) public class SampleServiceImpl implements SampleService{ }
Spring 环境下 API 方式
在 Spring 或者 Spring Boot 环境下发布一个 Bolt 协议的服务只需往
ServiceParam
里面增加一个BoltBindingParam
。ServiceParam serviceParam =new ServiceParam(); serviceParam.setInterfaceType(SampleService.class);// 设置服务接口。 serviceParam.setInstance(new SampleServiceImpl());// 设置服务接口的实现。 List<BindingParam> params =new ArrayList<BindingParam>(); BindingParam serviceBindingParam =new BoltBindingParam(); params.add(serviceBindingParam); serviceParam.setBindingParams(params);
非 Spring 环境下的 API 方式
在非 Spring 环境下使用 SOFARPC 的裸 API 提供 Bolt 协议的服务,只需要将 Protocol 为 Bolt 的
ServerConfig
设置给对应的ProviderConfig
。RegistryConfig registryConfig =new RegistryConfig() .setProtocol("zookeeper") .setAddress("127.0.0.1:2181"); // 新建一个协议为 Bolt 的 ServerConfig。 ServerConfig serverConfig =new ServerConfig() .setPort(8803) .setProtocol("bolt"); ProviderConfig<SampleService> providerConfig =new ProviderConfig<SampleService>() .setInterfaceId(SampleService.class.getName()) .setRef(new SampleServiceImpl()) // 将 ServerConfig 设置给 ProviderConfig,表示这个服务发布的协议为 Bolt。 .setServer(serverConfig) .setRegistry(registryConfig); providerConfig.export();
引用服务
使用 SOFARPC 引用一个 Bolt 服务,只需要增加名称为 Bolt 的 Binding 即可。不同发布方式中添加 Bolt Binding 的方法如下:
XML
使用 XML 引用一个 Bolt 协议的服务只需在
<sofa:reference>
标签下增加<sofa:binding.bolt>
标签。<sofa:reference id="sampleService" interface="com.alipay.sofa.rpc.sample.SampleService"> <sofa:binding.bolt/> </sofa:reference>
Annotation
使用 Annotation 引用一个 Bolt 协议的服务只需设置
@SofaReferenceBinding
的bindingType
为bolt
。@SofaReference(binding =@SofaReferenceBinding(bindingType ="bolt")) private SampleService sampleService;
Spring 环境下 API 方式
在 Spring 或者 Spring Boot 环境下引用一个 Bolt 协议的服务,只需往
ReferenceParam
里面增加一个BoltBindingParam
。ReferenceClient referenceClient = clientFactory.getClient(ReferenceClient.class); ReferenceParam<SampleService> referenceParam =new ReferenceParam<SampleService>(); referenceParam.setInterfaceType(SampleService.class); BindingParam refBindingParam =new BoltBindingParam(); referenceParam.setBindingParam(refBindingParam);
非 Spring 环境下的 API 方式
在非 Spring 环境下使用 SOFARPC 的裸 API 引用一个 Bolt 协议的服务,只需设置
ConsumerConfig
的 Protocol 为bolt
。ConsumerConfig<SampleService> consumerConfig =new ConsumerConfig<SampleService>() .setInterfaceId(SampleService.class.getName()) .setRegistry(registryConfig) .setProtocol("bolt"); SampleService sampleService = consumerConfig.refer();