• Feign Fallback FallbackFactory 笔记


    关于使用请查看 :https://blog.csdn.net/sun_shaoping/article/details/82079287

    1.@SpringCloudApplication

    该包包含三个注解

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableCircuitBreaker

    2.安装 maven 包

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            </dependency>

    3.新增开关

    feign.hystrix.enabled=true

    什么时候应该Fallback

    2XX,成功,这个不用再讨论。
    5XX,也相当明确,直接Fallback,这个也不用讨论。
    4XX,可以一律认为是业务逻辑异常(或者更精确的说,可以认为4XX中的某几个是业务异常)。这时候,应该是用if/else来处理这个异常,而不应该动用Hystrix来Fallback。

    Feign在默认情况下,对于非2XX,都认为是异常。这个地方是有问题的。特别是对于404这种非常容易抛出的业务异常来说,没两下就circuit break了。

    @FeignClient(name = "marathon-lb", fallback = FooBarClientFallback.class, decode404 = true)
    @RequestMapping(value = "/foo/bar")
    public interface FooBarClient {
        ... ...
    }
    只需要加入decode404 = true这一个参数,Feign对于2XX和404 ,都不会走Fallback了。
    排除404,已经基本上够用了,如果想把409、400等status也加到例外中,可以重写一下Feign的errorDecoder。
     

    REST返回码的选择

    下面详细讲一下HTTP STATUS的选择问题。

    关于HTTP返回码,看了很多参考(论战),"大概"可以这样选择:

    成功: 2XX系列

    • 200 OK // 查询、删除成功用这个
    • 201 CREATED // 新增、修改时用这个。且返回BODY中无任何信息。

    业务异常: 4XX系列

    • 400 BAD_REQUEST // 现在有很多人在业务异常时抛这个错。但400要慎重使用。稍后解释。
    • 404 NOT_FOUND // 查询不到结果时用这个
    • 403 FORBIDDEN // 这个也慎重使用。
    • 409 CONFLICT // 业务异常时,可以用这个。

    主机异常:5XX系列

    • 500 INTERNAL_SERVER_ERROR // 对于未知异常,统一用这个了
    • 503 SERVICE_UNAVAILABLE // Hystrix异常用这个

    参考:https://www.jianshu.com/p/8d47a4fc4e82

  • 相关阅读:
    shell if 条件语句实践
    shell函数
    透视财富增长的秘密
    kvm虚拟化实践
    Linux驱动编程--基于I2C子系统的I2C驱动
    Makefile中=、:=、+=、?=的区别
    字符设备驱动结构与开发
    驱动分类
    为什么ARM的frq中断的处理速度比较快
    Linux设备驱动01
  • 原文地址:https://www.cnblogs.com/fqybzhangji/p/13737935.html
Copyright © 2020-2023  润新知