dubbo是阿里巴巴开源出来的分布式服务治理框架,主要的角色有服务提供方和服务消费方,而不同的角色有不同的超时时间,为了方便管理dubbo为超时创建了统一的规则,规则如下:
1.方法级优先,接口级次之,全局配置再次之。
2.如果级别一样,则消费方优先,提供方次之。
<!-- 为消费方的方法设置timeout -->
<dubbo:reference interface="com.xxx.XXXService">
<dubbo:method name="findXxx" timeout="1000"/>
</dubbo:reference>
<!-- 为服务提供方的方法设置timeout -->
<dubbo:service interface="com.xxx.XXXService">
<dubbo:method name="findXxx" timeout="2000"/>
</dubbo:service>
<!-- 为消费方接口设置timeout -->
<dubbo:reference interface="com.xxx.XXXService timeout="3000"/>
<!-- 为服务提供方接口设置timeout -->
<dubbo:service interface="com.xxx.XXXService timeout="4000"/>
<!-- 消费方设置timeout -->
<dubbo:consumer timeout="5000"/>
<!-- 服务提供方设置timeout -->
<dubbo:provider timeout="6000"/>
根据上面的两个规则可以看出来如果使用该配置文件那么使用消费方方法,那么超时时间即为1000,如果消费方使用接口,没使用方法那么超时时间就是3000,其他同理。其中,服务提供方配置,通过URL经由注册中心传递给消费方。
要注意的是dubbo开发团队建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置。