Dubbo(十) dubbo服务超时时间设置以及优先级

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>

二、基于注解方式的超时配置

服务提供者注解方式配置:

服务消费者注解方式配置:

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Dubbo 中,服务端和调用端都可以设置超时时间,但是它们的含义和设置方式有所不同。 服务超时时间是指服务提供方处理请求的最大时间,如果在这个时间服务提供方没有返回结果,则 Dubbo 会抛出超时异常。服务超时时间可以通过 `timeout` 属性来设置,例如: ``` <dubbo:service interface="com.example.DemoService" ref="demoServiceImpl" timeout="3000"/> ``` 在上面的示例中,服务提供方处理请求的最大时间为 3 秒钟。 调用端超时时间是指服务消费方等待服务提供方返回结果的最大时间,如果在这个时间服务提供方没有返回结果,则 Dubbo 会抛出超时异常。调用端超时时间可以通过 `timeout` 属性来设置,例如: ``` <dubbo:reference id="demoService" interface="com.example.DemoService" timeout="3000"/> ``` 在上面的示例中,服务消费方等待服务提供方返回结果的最大时间为 3 秒钟。 需要注意的是,服务端和调用端的超时时间是相对的,即服务端的超时时间应该大于调用端的超时时间,否则服务提供方可能在请求还未处理完毕时就返回结果了,导致调用方得到错误的结果。 综上所述,服务超时时间和调用端超时时间的含义和设置方式有所不同,需要根据具体的场景进行设置。同时,服务端的超时时间应该大于调用端的超时时间,以保证服务提供方能够正常处理请求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值