本文介绍在 SOFABoot 环境下完整的 SOFARPC 服务发布与引用说明。
发布服务
<bean id="helloSyncServiceImpl" class="com.alipay.sofa.rpc.samples.invoke.HelloSyncServiceImpl"/>
<sofa:service ref="helloSyncServiceImpl" interface="com.alipay.sofa.rpc.samples.invoke.HelloSyncService" unique-id="">
<sofa:binding.bolt>
<sofa:global-attrs registry="" serialize-type="" filter="" timeout="3000" thread-pool-ref=" "
warm-up-time="60000"
warm-up-weight="10" weight="100"/>
</sofa:binding.bolt>
<sofa:binding.rest>
</sofa:binding.rest>
</sofa:service>
属性说明:
属性 | 默认值 | 说明 |
id | Bean 名 | ID |
class | - | 类 |
ref | - | 服务接口实现类 |
interface | - | 服务接口(唯一标识元素) |
unique-id | - | 服务标签(唯一标识元素) |
filter | - | 过滤器配置别名 |
registry | DSR | 服务端注册中心。多个注册中心需使用逗号分隔。 支持的注册中心请参见 注册中心路由。 |
timeout | 3000 | 服务端执行超时时间 单位:毫秒。 |
serialize-type | hessian2 | 序列化协议,取值为:hessian2、protobuf。 |
thread-pool-ref | - | 自定义业务线程池,需要指向一个 |
weight | 100 | 服务静态权重。数值越大,权重越高。 |
warm-up-weight | 10 | 服务提供者的预热权重,当客户端刚建立连接时,在指定的预热时间内会使用此权重。 |
warm-up-time | 0 | 服务提供者的预热时间,当客户端刚建立连接时,在该时间内会使用预热权重。 单位:毫秒。 |
引用服务
<sofa:reference jvm-first="false" id="helloSyncServiceReference"
interface="com.alipay.sofa.rpc.samples.invoke.HelloSyncService" unique-id="">
<sofa:binding.bolt>
<sofa:global-attrs type="sync" timeout="3000" callback-ref="" callback-class="" address-wait-time="1000"
connect.num="1" check="false" connect.timeout="1000" filter="" generic-interface=""
idle.timeout="1000"
idle.timeout.read="1000" lazy="false" loadBalancer="" registry="" retries="1"
serialize-type=""/>
<sofa:route target-url="xxx:12200"/>
<sofa:method name="hello" callback-class="" callback-ref="" timeout="3000" type="sync"/>
</sofa:binding.bolt>
</sofa:reference>
属性说明:
属性 | 默认值 | 说明 |
id | 自动生成 | ID |
jvm-first | true | 是否优先使用本地 JVM 配置,取值:true、false。 |
interface | - | 服务接口(唯一标识元素) 无论是普通调用还是返回调用,都必须设置实际的接口类。 |
unique-id | - | 服务标签(唯一标识元素) |
type | sync | 调用方式。取值为:sync、oneway、callback、future。 |
filter | - | 过滤器配置别名 |
registry | DSR | 服务端注册中心。多个注册中心需使用逗号分隔。 支持的注册中心请参见 注册中心路由。 |
method | - | 方法级配置, |
serialize-type | hessian2 | 序列化协议,取值为:hessian2、protobuf。 |
target-url | - | 使用直连调用时配置的直连地址。 配置 |
generic-interface | - | 泛化接口 |
connect.timeout | 1000 | 消费方连接超时时间 单位:毫秒。 |
connect.num | -1 | 消费方连接数 -1 表示不设置(默认为每个目标地址建立一个连接)。 |
idle.timeout | -1 | 消费方最大空闲时间 -1 表示使用底层默认值(底层默认值为 0,表示永远不会读 idle)。该配置也是心跳的时间间隔,当请求 idle 时间超过配置时间后,发送心跳到服务方。 |
idle.timeout.read | -1 | 消费方最大读空闲时间 -1 表示使用底层默认值(底层默认值为 30)。如果 |
loadBalancer | random | 负载均衡算法 |
lazy | false | 是否延迟建立长连接,取值:true、false。 |
address-wait-time | 0 | reference 生成时,等待配置中心将地址推送到消费方的时间。 单位:毫秒。 最大值为 30000 毫秒,超过这个值时会被调整为 30000 毫秒。 |
timeout | 3000 | 调用超时时间 |
retries | 0 | 当出现非业务异常时,框架层面自动重试的次数。需要服务提供者自己保证方法的幂等性。 |
callback-class | - | callback 回调类,详情请参见 Bolt 协议的调用方式。 callback 时才可用。 |
callback-ref | - | callback 回调类,详情请参见 Bolt 协议的调用方式。 callback 时才可用。 |
配置的优先级
SOFARPC 里面的某些配置,例如调用超时 timeout
属性可以在服务提供方设置,也可以在服务调用方设置。这些配置的优先级从高到低排列如下:
线程调用级别设置。
服务调用方。
方法级别设置。
Reference 级别设置。
服务提供方。
方法级别设置。
Service 级别设置。