重试
必要步骤
1.必须要引入maven依赖,否则不生效
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.2.2.RELEASE</version>
</dependency>
2.zuul.retryable=true 必须要配置为true
3.重试次数
#对当前实例的重试次数(不包含首次调用)
ribbon.MaxAutoRetries
#切换实例的重试次数(不包含首次调用)
ribbon.MaxAutoRetriesNextServer
如果想给某个服务配置单独配置重试次数,可以配置成user-service.ribbon.MaxAutoRetries ,把服务名放到ribbon前面即可。
亲测,如果配置成
ribbon.MaxAutoRetries=1
ribbon.MaxAutoRetriesNextServer=1
1.如果有2个服务提供者A和B,则会每个调用2次,满足预期效果,先调服务A,超时,按MaxAutoRetries=1,则再调A 1次,又超时;按MaxAutoRetriesNextServer=1,换1台服务器B,再调用1次,超时;然后再重试1次B,还是超时,整个调用结束。
2.如果只有1个服务提供者A,则会调用服务提供者A 4次;估计是由于MaxAutoRetriesNextServer=1,切换后还是调用到了服务A上,导致调了4次。
3.总结,如果只有1台服务提供者,MaxAutoRetriesNextServer设置成0比较好,否则重试次数可能会和你预期的不一致