① 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. 常见排序算法复杂度总结
  2. Windows 8测试版安装图组
  3. java gc日志乱码_6000+字,30+张图。JAVA线上故障排查全套路总结。
  4. 【android-tips】android程序执行adb shell命令(实例源码)
  5. 第28天:js-Tab栏切换封装函数
  6. ligerUI的列头合并代码片段
  7. 基本线程同步(三)在同步的类里安排独立属性
  8. python3 beautifulsoup 表格,使用Python中的BeautifulSoup拉取特定的表数据
  9. math.asin_JavaScript中带有示例的Math.asin()方法
  10. 使用Java处理大文件
  11. mac下ssh 报错:localhost: ssh: connect to host localhost port 22: Connection refused
  12. Nginx 配置https证书认证
  13. 在TFS2013上删除项目
  14. python成员变量_Python——成员变量
  15. Zmodem安装,拖拽的方式通过shell命令界面实现windows和linux之间的文件互传
  16. qdir 自动创建多级目录_QDir 类 - 目录信息类
  17. excel自动调整列宽_Java 设置Excel自适应行高、列宽
  18. 2021年隐私和安全性最佳的8款Linux手机
  19. linux 关机流程 init exit,Linux开关机命令(shutdown,reboot,halt,init),haltinit
  20. tapd怎么注册_腾讯出品的研发协作工具TAPD,可免费使用, 体验良好

热门文章

  1. dota2幻影刺客技能大合集
  2. 获得淘宝/天猫app商品详情原数据
  3. 直觉模糊的TODIM多属性决策方法及matlab应用
  4. VC++播放Flash
  5. linux 压缩 解压缩 文件或文件夹
  6. 十大战略工具(8)—— 平衡记分卡
  7. ffmpeg 将多个视频片段合成一个视频
  8. windows xp下反查五笔编码问题
  9. go语言实现最小区块链教程5-地址
  10. android按下power键 系统不亮屏,不息屏。