Spring Retry的参数解析

2020-04-16  本文已影响0人  陈强Mike晓

@Retryable(value = Exception.class, maxAttempts =3, backoff =@Backoff(delay =2*60*1000L,maxDelay=10*60*1000L , multiplier =2))

maxAttempts:设置最大的重新发起请求的次数,默认3次。

delay:是每次延迟的次数,如果只设置此参数,没设置maxDelay,则delay不管设置多久。最长时间只能是30秒钟。

列如:@Retryable(value = Exception.class, maxAttempts =3, backoff =@Backoff(delay =2*60*1000L , multiplier =2))   此时虽然delay设置成了2分钟但由于没有设置maxDelay,所以默认还是30秒。可以自己写demo进行测试。

maxDelay:最大延迟的时间,不设置默认为30秒钟。

multiplier:重新发起延迟时间的基数。

本人还遇到一个问题,就是没有使用@Recover注解的时候,我次数设置maxAttempts的为2次时候,这时候会重新发起请求4次。

如果maxAttempts设置为3的时候,这时候发起9次请求。

不知道是什么原因导致的bug。

最后加了@Recover,然后就正常了,maxAttempts设置的几次就是几次了。

@Recover

public int recover(Exception e) {

logger.warn("减库存失败!!!" + LocalTime.now());

    return totalNum;

}

上一篇下一篇

猜你喜欢

热点阅读