dubbo服务超时时间有xml和注解两种方式进行实现配置超时功能。在配置范围上分为全部超时配置、接口类上超时配置、以及接口方法上超时配置。同类型上的配置消费端优先提供着端,靠近原则方法配置优先于接口类全局配置优先级最低。所以dubbo的超时时间优先级为:消费者Method>提供者method>消费者Reference>提供者Service>消费者全局配置provider>提供者全局配置consumer。
一、基于xml方式的超时配置
服务提供者xml方式超时配置如下:
<dubbo:provider timeout="5000"/> 全局配置
<dubbo:service timeout="4000" .../> 接口类配置
<dubbo:method timeout="3000" ...> 方法配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="user-service-provider" />
<!-- 使用zookeeper广播注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.0.126:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 和本地bean一样实现服务 -->
<bean id="userService" class="com.xiaohui.service.impl.UserServiceImpl" />
<!-- 声明需要暴露的服务接口 timeout 接口类中全部方法超时配置 优先级2 -->
<dubbo:service interface="com.xiaohui.service.UserService" ref="userService" timeout="4000" >
<!-- 单个方法超时配置优先级最高1 -->
<dubbo:method name="queryAllUserAddress" timeout="3000"></dubbo:method>
</dubbo:service>
<!-- 服务提供者全局超时时间配置优先级最低 -->
<dubbo:provider timeout="5000"></dubbo:provider>
</beans>
服务消费者xml 方式配置如下:
<dubbo:consumer timeout="4000" > 全局配置
<dubbo:reference timeout="3000" ...> 接口类配置
<dubbo:method timeout="2000" ...> 方法配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="order-service-consumer" />
<!-- 使用zookeeper广播注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.0.126:2181" />
<!-- 引用配置: 创建一个远程服务代理,一个引用可以指向多个注册中心 -->
<dubbo:reference id="userService" timeout="3000" interface="com.xiaohui.service.UserService">
<dubbo:method name="queryAllUserAddress" timeout="2000"></dubbo:method>
</dubbo:reference>
<!-- orderService -->
<bean class="com.xiaohui.service.impl.OrderServiceImpl">
<property name="userService" ref="userService"></property>
</bean>
<!-- 超时全局配置 -->
<dubbo:consumer timeout="4000"></dubbo:consumer>
</beans>
二、基于注解方式的超时配置
服务提供者注解方式配置:
服务消费者注解方式配置: