阿里云首页 SOFAStack 微服务

多协议发布

在 SOFARPC 中,同一个服务可以多协议发布,并按不同协议被客户端调用。主要调用方式有下述几种:

  • Java API 方式

    可以按照如下的代码构建多个 ServerConfig,不同的 ServerConfig 设置不同的协议,然后将这些 ServerConfig 设置给 ProviderConfig

    List<ServerConfig> serverConfigs =new ArrayList<ServerConfig>();
    serverConfigs.add(serverConfigA);
    serverConfigs.add(serverConfigB);
    providerConfig.setServer(serverConfigs);
  • XML 方式

    直接在 <sofa:service> 标签中增加多个 binding 即可:

    <sofa:service ref="sampleFacadeImpl" interface="com.alipay.sofa.rpc.bean.SampleFacade">
        <sofa:binding.bolt/>
        <sofa:binding.rest/>
        <sofa:binding.dubbo/>
    </sofa:service>
  • Annotation 方式

    @SofaService 中增加多个 binding 即可:

    说明

    如果使用 rest 协议,接口需要要加 path。

    @SofaService(
          interfaceType =SampleService.class,
          bindings ={
    @SofaServiceBinding(bindingType ="rest"),//使用 rest 协议,接口需要要加 path。
    @SofaServiceBinding(bindingType ="bolt")
    }
    )
    public class SampleServiceImpl implements SampleService{
    // ...
    }