resttemplate 请求重试_Spring Cloud 参考文档(重试失败的请求)

本文介绍了Spring Cloud Netflix中的请求重试机制,包括如何利用Spring Retry自动重试失败的HTTP请求,例如使用负载均衡的RestTemplate、Ribbon或Feign。讨论了默认的退避策略以及如何自定义退避策略,如设置ExponentialBackOffPolicy。同时,详细阐述了通过配置Ribbon的MaxAutoRetries、MaxAutoRetriesNextServer和OkToRetryOnAllOperations属性来控制重试行为,以及如何针对特定HTTP状态码设置重试。最后提到了Zuul的重试配置,包括如何关闭和逐个路由禁用重试功能。
摘要由CSDN通过智能技术生成

重试失败的请求

Spring Cloud Netflix提供了多种方式来发出HTTP请求,你可以使用负载均衡的RestTemplate、Ribbon或Feign。无论你如何选择创建HTTP请求,总是有可能请求失败,请求失败时,你可能希望自动重试请求,要在使用Sping Cloud Netflix时这样做,你需要在应用程序的类路径中包含Spring Retry。当存在Spring Retry时,负载均衡的RestTemplates、Feign和Zuul会自动重试任何失败的请求(假设你的配置允许这样做)。

退避策略

默认情况下,重试请求时不使用退避策略,如果要配置退避策略,则需要创建类型为LoadBalancedRetryFactory的bean并覆盖给定服务的createBackOffPolicy方法,如以下示例所示:

@Configuration

public class MyConfiguration {

@Bean

LoadBalancedRetryFactory retryFactory() {

return new LoadBalancedRetryFactory() {

@Override

public BackOffPolicy createBackOffPolicy(String service) {

return new ExponentialBackOffPolicy();

}

};

}

}

配置

将Ribbon与Spring Retry一起使用时,可以通过配置某些Ribbon属性来控制重试功能,为此,请设置client.ribbon.MaxAutoRetries、client.ribbon.MaxAutoRetriesNextServer和client.ribbon.OkToRetryOnAllOperations属性,有关这些属性的说明,请参阅Ribbon文档。

启用client.ribbon.OkToRetryOnAllOperations包括重试POST请求,由于请求body的缓冲,POST请求会对服务器的资源产生影响。

此外,你可能希望在响应中返回某些状态码时重试请求,你可以通过设置clientName.ribbon.retryableStatusCodes属性列出你希望Ribbon客户端重试的响应码,如以下示例所示:

clientName:

ribbon:

retryableStatusCodes: 404,502

你还可以创建类型为LoadBalancedRetryPolicy的bean,并实现retryableStatusCode方法以在给定状态码的情况下重试请求。

Zuul

你可以通过将zuul.retryable设置为false来关闭Zuul的重试功能,你还可以通过将zuul.routes.routename.retryable设置为false来逐个路由地禁用重试功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值