SpringCloud入门(十一):网关Gateway 之 重试(Greenwich.SR2)

简介

重试,相信大家都不陌生,在springcloud中,ribbon、feign都有重试的机制,可以有效的处理服务的单点故障,或者因为网络的波动,导致首次的请求失败。网关也有自己的重试机制。

代码实现

网关实现重试也相对简单,官方已经为我们提供了现成 的filter,不需要引入任何依赖就可以到达重试机制。

yml

spring:
  application:
    name: gateway-service
  redis:
    host: 127.0.0.1
    port: 6379
    database: 0
    password: 123456
  cloud:
    gateway:
      discovery:
        locator:
          #是否与服务发现组件结合,通过serviceId转发到具体的实例。默认为false,设为true开始根据serviceId创建路由功能
          enabled: false
          #是将请求路径上的服务名配置为小写(因为服务注册的时候,向注册中心注册时将服务名转成大写的了)
          lower-case-service-id: true
      routes:
      #自定义 全局唯一路由ID
        - id: feign-service
          #uri以lb://开头(lb代表从注册中心获取服务),后面接的就是你需要转发到的服务名称
          uri: lb://FEIGN-SERVICE
          #谓词
          predicates:
            #匹配路由   http://ip:port/feign/**  的请求
            - Path=/feign/**
          #过滤器
          filters:
            #剥离请求路径 例如 http://ip:port/feign/FEIGN-SERVICE/hello   ==>  http://ip:port/FEIGN-SERVICE/hello
            - StripPrefix=1
             #重试
            - name: Retry
              args:
                #重试次数,默认值是3次
                retries: 3
                ##状态码配置,和series不同的是这边是具体状态码的配置,取值请参考:org.springframework.http.HttpStatus
                statuses:
                  - BAD_GATEWAY
                #状态码配置(分段),符合的某段状态码才会进行重试逻辑,默认值是SERVER_ERROR,值是5,也就是5XX(5开头的状态码),共有5个值:
                series:
                  - SERVER_ERROR
                #定哪些方法的请求需要进行重试逻辑,默认值是GET方法,取值如下:
                methods:
                  - GET

microservice-feign新增接口,throw一个异常信息,来达到重试的目的。


    @GetMapping("/retry")
    public String retry(Integer parm){
        log.info("      接收到请求       ");
        if(parm == 1){
            throw new RuntimeException("error");
        }
        return "    retry!   ";
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值