资讯专栏INFORMATION COLUMN

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

BakerJ / 2745人阅读

摘要:当存在时,负载均衡的和会自动重试任何失败的请求假设你的配置允许这样做。启用包括重试请求,由于请求的缓冲,请求会对服务器的资源产生影响。

重试失败的请求

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.MaxAutoRetriesclient.ribbon.MaxAutoRetriesNextServerclient.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来逐个路由地禁用重试功能。

上一篇:使用Sidecar支持多语言

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74286.html

相关文章

  • Spring Cloud 参考文档Spring Cloud Commons:通用抽象)

    摘要:通用的抽象服务发现负载均衡和断路器等模式适用于所有客户端都可以使用的通用抽象层,独立于实现例如,使用或发现。重试失败的请求可以将负载均衡的配置为重试失败的请求,默认情况下,禁用此逻辑,你可以通过将添加到应用程序的类路径来启用它。 Spring Cloud Commons:通用的抽象 服务发现、负载均衡和断路器等模式适用于所有Spring Cloud客户端都可以使用的通用抽象层,独立于实...

    yangrd 评论0 收藏0
  • Spring Cloud 参考文档Spring Cloud Config Client)

    摘要:应用程序可以立即利用或应用程序开发人员提供的其他外部属性源,它还提取了一些与变化事件相关的额外有用特性。标签也可以以逗号分隔列表的形式提供,在这种情况下,列表中的项目将逐个尝试,直到成功为止,在处理特性分支时,此行为非常有用。 Spring Cloud Config Client Spring Boot应用程序可以立即利用Spring Config Server(或应用程序开发人员提供...

    DevWiki 评论0 收藏0
  • Spring Cloud 参考文档(HTTP客户端)

    摘要:创建自己的客户端时,你还负责为这些客户端实施正确的连接管理策略,不正确地执行此操作可能会导致资源管理问题。维护模式的模块将模块置于维护模式意味着团队将不再向模块添加新功能,将修复和安全问题,还将考虑和审查来自社区的小型拉请求。 HTTP客户端 Spring Cloud Netflix会自动为你创建Ribbon、Feign和Zuul使用的HTTP客户端,但是,你也可以根据需要自定义自己的...

    hosition 评论0 收藏0
  • Spring Cloud Gateway重试机制

    摘要:还有就是重试次数如果太多的话会导致请求量加倍,给后端造成更大的压力,设置合理的重试机制才是最关键的。今天我们来简单的了解下中的重试机制和使用。使用讲解是对请求重试提供的一个。 前言 重试,我相信大家并不陌生。在我们调用Http接口的时候,总会因为某种原因调用失败,这个时候我们可以通过重试的方式,来重新请求接口。 生活中这样的事例很多,比如打电话,对方正在通话中啊,信号不好啊等等原因,你...

    shery 评论0 收藏0
  • spring-cloud-feign源码深度解析

    摘要:内部使用了的动态代理为目标接口生成了一个动态代理类,这里会生成一个动态代理原理统一的方法拦截器,同时为接口的每个方法生成一个拦截器,并解析方法上的元数据,生成一个请求模板。的核心源码解析到此结束了,不知道是否对您有无帮助,可留言跟我交流。 Feign是一个声明式的Web服务客户端。这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释。它具有可插拔注释支持,包...

    vibiu 评论0 收藏0

发表评论

0条评论

BakerJ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<