① feign 远程调用丢失请求头

问题描述:当远程调用其他服务时,设置了拦截器判断用户是否登录,但是结果是即使用户登录了,也会显示用户没登录,原因在于远程调用时,发送的请求是一个新的情求,请求中并不存在cookie,而原始请求中是携带cookie的。

解决方案如下:

@Configuration
public class MallFeignConfig {@Bean("requestInterceptor")public RequestInterceptor requestInterceptor() {RequestInterceptor requestInterceptor = template -> {//1、使用RequestContextHolder拿到刚进来的请求数据ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if (requestAttributes != null) {//老请求HttpServletRequest request = requestAttributes.getRequest();if (request != null) {//2、同步请求头的数据(主要是cookie)//把老请求的cookie值放到新请求上来,进行一个同步String cookie = request.getHeader("Cookie");template.header("Cookie", cookie);}}};return requestInterceptor;}
}

② 异步调用 Feign 丢失上下文问题

问题描述:由于feign请求拦截器为新的request设置请求头底层是使用ThreadLocal保存刚进来的请求,所以在异步情况下,其他线程并不能获取到主线程的ThreadLocal,所以也拿不到请求。

解决:先获取主线程的requestAttributes,再分别向其他线程中设置

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
CompletableFuture.runAsync(() ->{RequestContextHolder.setRequestAttributes(requestAttributes);
});

Feign 调用存在的问题相关推荐

  1. 使用feign调用注解在eureka上的微服务,简单学会微服务

    使用feign调用注解在eureka上的微服务. 首先,确保所有服务(调用方与被调用方)都被注册在同一个eureka服务上. 1. 在调用方添加依赖(万事第一步,加依赖) <dependency ...

  2. feign调用走不走网关全局拦截_feign服务端出异常客户端处理的方法

    在使用feign进行远程方法调用时,如果远程服务端方法出现异常,客户端有时需要捕获,并且把异常信息返回给前端,而如果在开启熔断之后,这个异常会被消化,所以说,如果希望拿到服务端异常,feign.hys ...

  3. springcloud feign 服务调用其他服务_springCloud微服务项目 构建公共的feign调用

    在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的feign 1.先在common 公共项目中建一个公共feign调 ...

  4. feign session 调用_springboot使用feign调用session传递失效解决方案

    标题 框架 version 1 springboot 1.5.9.release 2 springCloud 1.2.4.release 3 eureka 1.6.2 4 feign 9.5.0 前言 ...

  5. feign调用session丢失解决方案

    最近在做项目的时候发现,微服务使用feign相互之间调用时,存在session丢失的问题.例如,使用Feign调用某个远程API,这个远程API需要传递一个鉴权信息,我们可以把cookie里面的ses ...

  6. 微服务调用传string值_springCloud微服务项目 构建公共的feign调用

    在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的feign 1.先在common 公共项目中建一个公共feign调 ...

  7. 3.spring cloud + zookeeper注册中心 + Feign调用案例

    3.spring cloud + zookeeper注册中心 + Feign调用案例 3.1.pom.xml定义 <?xml version="1.0" encoding=& ...

  8. 使用 Feign 调用分页接口报错:Method has too many Body parameters(亲测)

    一.背景 接口定义: @ApiOperation(value = "分页查询会话") @PostMapping(Routes.SESSIONS_QUERY) JsonResult& ...

  9. spring cloud 微服务调用--ribbon和feign调用

    这里介绍ribbon和feign调用两种通信服务调用方式,同时介绍如何引入第三方服务调用.案例包括了ribbon负载均衡和hystrix熔断--服务降级的处理,以及feign声明式服务调用.例子包括s ...

  10. retryexec.java 94_解决feign调用接口不稳定的问题

    我就废话不多说了,大家还是直接看代码吧~ Caused by: java.net.SocketException: Software caused connection abort: recv fai ...

最新文章

  1. 智源杯天文数据算法挑战赛开赛,前沿AI技术助力天文科学研究
  2. 014_下载乱码处理
  3. linux上使用ASP
  4. cdh Cannot access: user/hive/warehouse. Note: you are a Hue admin but not a HDFS
  5. 26个适用于VMware管理员的强大工具,收藏了!
  6. linux http 访问限制,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  7. linux mint 18.3浏览器,在Ubuntu 18.04/Linux Mint 19中安装Chromium浏览器的方法
  8. HALCON 20.11:深度学习笔记(6)---有监督训练
  9. Three.js 学习笔记(1)--坐标体系和旋转
  10. 世上哪有那么多的怀才不遇
  11. QTcpSocket目录文件传输
  12. 从零开始微信小游戏(cocos creator)
  13. element-ui 删除input框尾部默认图标和获取焦点边框高亮问题
  14. 支付宝人脸识别身份证认证(新版SDK)
  15. java接口和抽象函数_Java接口和抽象类区别
  16. 共享电动滑板车来了,它估值为何高达20亿美金?
  17. 淘宝新店一个流量没有如何是好
  18. 为什么Microsoft账号登录显示暂时停用你的账户_苹果手机显示 Apple ID 被停用该如何恢复?...
  19. 创业成功:产业机会+时机+团队执行力+资本加入做乘法
  20. i.mx6 yocto 找不到 SDL

热门文章

  1. JS实现下载xlsx格式文件--js-xlsx
  2. OC中如何调试野指针异常(EXC_BAD_ACCESS(code = ....))
  3. 恭喜!收获野生运维工程师一枚!
  4. 王者荣耀4月22号服务器维护,王者荣耀4月22日活动大全
  5. 手机自身内存和手机存储卡的区别?
  6. vs登录界面空白_金蝶KIS云专业版登录使用时一片空白
  7. Javascript点击事件的3种写法(复习)
  8. 转载iphone开发学习笔记
  9. 多实例数据库应用PSU
  10. Ajax:ajax跨域解决方案代理机制原理及实现