@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;
}
网友评论