Feign 调用存在的问题
① 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 调用存在的问题相关推荐
- 使用feign调用注解在eureka上的微服务,简单学会微服务
使用feign调用注解在eureka上的微服务. 首先,确保所有服务(调用方与被调用方)都被注册在同一个eureka服务上. 1. 在调用方添加依赖(万事第一步,加依赖) <dependency ...
- feign调用走不走网关全局拦截_feign服务端出异常客户端处理的方法
在使用feign进行远程方法调用时,如果远程服务端方法出现异常,客户端有时需要捕获,并且把异常信息返回给前端,而如果在开启熔断之后,这个异常会被消化,所以说,如果希望拿到服务端异常,feign.hys ...
- springcloud feign 服务调用其他服务_springCloud微服务项目 构建公共的feign调用
在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的feign 1.先在common 公共项目中建一个公共feign调 ...
- 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 前言 ...
- feign调用session丢失解决方案
最近在做项目的时候发现,微服务使用feign相互之间调用时,存在session丢失的问题.例如,使用Feign调用某个远程API,这个远程API需要传递一个鉴权信息,我们可以把cookie里面的ses ...
- 微服务调用传string值_springCloud微服务项目 构建公共的feign调用
在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的feign 1.先在common 公共项目中建一个公共feign调 ...
- 3.spring cloud + zookeeper注册中心 + Feign调用案例
3.spring cloud + zookeeper注册中心 + Feign调用案例 3.1.pom.xml定义 <?xml version="1.0" encoding=& ...
- 使用 Feign 调用分页接口报错:Method has too many Body parameters(亲测)
一.背景 接口定义: @ApiOperation(value = "分页查询会话") @PostMapping(Routes.SESSIONS_QUERY) JsonResult& ...
- spring cloud 微服务调用--ribbon和feign调用
这里介绍ribbon和feign调用两种通信服务调用方式,同时介绍如何引入第三方服务调用.案例包括了ribbon负载均衡和hystrix熔断--服务降级的处理,以及feign声明式服务调用.例子包括s ...
- retryexec.java 94_解决feign调用接口不稳定的问题
我就废话不多说了,大家还是直接看代码吧~ Caused by: java.net.SocketException: Software caused connection abort: recv fai ...
最新文章
- 智源杯天文数据算法挑战赛开赛,前沿AI技术助力天文科学研究
- 014_下载乱码处理
- linux上使用ASP
- cdh Cannot access: user/hive/warehouse. Note: you are a Hue admin but not a HDFS
- 26个适用于VMware管理员的强大工具,收藏了!
- linux http 访问限制,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- linux mint 18.3浏览器,在Ubuntu 18.04/Linux Mint 19中安装Chromium浏览器的方法
- HALCON 20.11:深度学习笔记(6)---有监督训练
- Three.js 学习笔记(1)--坐标体系和旋转
- 世上哪有那么多的怀才不遇
- QTcpSocket目录文件传输
- 从零开始微信小游戏(cocos creator)
- element-ui 删除input框尾部默认图标和获取焦点边框高亮问题
- 支付宝人脸识别身份证认证(新版SDK)
- java接口和抽象函数_Java接口和抽象类区别
- 共享电动滑板车来了,它估值为何高达20亿美金?
- 淘宝新店一个流量没有如何是好
- 为什么Microsoft账号登录显示暂时停用你的账户_苹果手机显示 Apple ID 被停用该如何恢复?...
- 创业成功:产业机会+时机+团队执行力+资本加入做乘法
- i.mx6 yocto 找不到 SDL
热门文章
- JS实现下载xlsx格式文件--js-xlsx
- OC中如何调试野指针异常(EXC_BAD_ACCESS(code = ....))
- 恭喜!收获野生运维工程师一枚!
- 王者荣耀4月22号服务器维护,王者荣耀4月22日活动大全
- 手机自身内存和手机存储卡的区别?
- vs登录界面空白_金蝶KIS云专业版登录使用时一片空白
- Javascript点击事件的3种写法(复习)
- 转载iphone开发学习笔记
- 多实例数据库应用PSU
- Ajax:ajax跨域解决方案代理机制原理及实现