dubbo超时重试概述

consumer端和provider端都可以设置timeout。

超时优先级:consumer方法级>provider方法级>consumer接口级>provider接口级>consumer级>provider级

 

当consumer端调用超时,会触发重试调用。

重试对应的配置属性是retries。默认的重试次数是2。就是说,当调用超时,会最多重试2次,如果仍然失败,会提示异常。

 

对于查询或删除来说,接口重试是幂等的。

对于新增数据,如果retries>0,则要做幂等处理,否则会造成重复数据入库而产生bug。安全起见,可单独设置retries=0。

 

【说明】在直连的情况下,是不会触发重试的。

 

代码

§1. 服务接口定义:

package dubbodemo.contract;

public interface HelloWord {
    String say();

    String add(String str);
}

 

§2. 服务提供方

Provider application.yml dubbo配置timeout和retries:

dubbo:
  application:
    name: zhanggz-dubbodemo
  registry:
#    address: N/A
    address: zookeeper://127.0.0.1:2181
  protocol:
    port: 28088
    name: dubbo
  scan:
    base-packages: dubbodemo.provider
  provider:
    timeout: 2200
    retries: 3
View Code

相关文章: