直连调用

SOFARPC 支持指定地址进行调用的场景,此方式允许用户指定服务端地址。本文介绍直连调用的应用场景和配置方式。

注意事项

  • 当直连配置生效时,注册中心软负载将会失效。

  • 直连地址允许配置多个地址,多个地址之间使用英文逗号(,)或英文分号(;)分隔,多个地址间支持负载均衡。

应用场景

具体使用场景分为以下 2 种:

  • 线上场景

    在 XML 文件中配置服务引用时,在标签 sofa:binding.bolt 里面加上一个 route 标签。route 标签中放入一个 target-url 属性,属性值设置为需要调用的地址。

    <sofa:reference id="sampelService" interface="com.alipay.test.SampleService">
         <sofa:binding.bolt>
             <sofa:route target-url="${targetUrl}:port"/>
         </sofa:binding.bolt>
    </sofa:reference>

    ${targetUrl}:port 需修改为实际调用的地址和端口。更多配置方式,请参见 配置方式

  • 测试场景

    • application.properties 中配置 run_mode=TEST

    • 在 XML 文件中配置服务引用时,在标签 sofa:binding.bolt 里面加上一个 global-attrs 标签,里面放入一个 test-url 的属性,属性值设置为需要调用的地址。

    <sofa:reference id="sampleService" interface="com.alipay.test.SampleService">
         <sofa:binding.bolt>
             <sofa:global-attrs test-url="${targetUrl}:port"/>
         </sofa:binding.bolt>
    </sofa:reference>
    重要
    • test-url 仅适用于 XML 的配置方式。

    • test-url 必须配合 run_mode=TEST 才会生效,主要用于测试阶段。

配置方式

  • API 方式

    通过 API 方式配置直连调用,地址格式为:协议://IP:端口。配置示例如下:

    ConsumerConfig<HelloService> consumer =new ConsumerConfig<HelloService>()
    .setInterfaceId(HelloService.class.getName())
    .setRegistry(registryConfig)
    .setDirectUrl("bolt://127.0.0.1:12201");
  • Annotation 方式

    通过 Annotation 方式配置直连调用,地址格式为:IP:端口。配置示例如下:

    @SofaReference(binding =@SofaReferenceBinding(bindingType ="bolt", directUrl ="127.0.0.1:12220"))
    private SampleService sampleService;
  • XML 方式

    通过 XML 方式配置直连调用,地址格式为:IP:端口。配置示例如下:

    <sofa:reference id="sampleService" interface="com.alipay.test.SampleService">
         <sofa:binding.bolt>
             <sofa:global-attrs target-url="127.0.0.1:12200"/>
         </sofa:binding.bolt>
    </sofa:reference>