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