Feign—遇到的坑解决记录

作者: 小疯子 分类: Feign 发布时间: 2020-02-05 18:57

1 . feign一直走fallback

feign一直接调用@feignClient中定义的fallback
@FeignClient执行了被代理调用的服务,但是仍然执行fallback

  1. 一个原因是设置的hystrix过期时间过短;
    时间过短的解决方式:

    hystrix:
    command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 5000 # 设置hystrix的超时时间为5000m
  2. 另一个原因就是被代理调用的服务有代码上执行的错误,有错误直接在被调用服务上能看到错误;
  3. 我出现是被调用服务没有报错,但是仍然执行被调用服务的同时还是去走fallback,原因是因为我在被调用服务中设置了response.setStatus为4xx,而feign有个地方就是针对返回的status来进行回调,设置的是因为response的status不处于200~300之间,会调用ErrorDecoder.java直接属于错误信息来进行处理。

2 . 被调用方中执行response.setHeader,但是在调用方返回给前端没有header设置的信息

关于feign调用提供服务方,提供服务方设置了response.setHeader,但是在调用方并返回到客户端的时候这个header消失无踪了,由此引出了ResponseEntity,如果返回值是void就是ResponseEntity这种返回类型
调用方和提供调用方返回值都写成ResponseEntity<Result<List<Map<String, Object>>>>
eg示例:git shop 中\manage-server\server-user\src\main\java\com\xiaofeng\shop\serveruser\provider\PermissionController.java -> getMenuList

0