① 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. (001) java后台开发之流程初识
  2. 全国计算机一级wps网络,全国计算机一级《WPS》考试试题及答案
  3. 利用oc门或od门实现线与_景县专业门球场专用人造草坪甄选博翔远
  4. oracle 库存管理系统,库存管理系统
  5. 新闻文本内容知识图谱表示项目
  6. WORD 如何在方框里打勾?
  7. android 退出应用没有走ondestory方法,[Android基础论]为何Activity退出之后,系统没有调用onDestroy方法?...
  8. 叶脊网络拓扑(leaf-spine)
  9. python写斗地主游戏_python编程斗地主 python编程入门
  10. JavaScript 高级程序设计笔记
  11. android imageview 图片模糊,imageview实现高斯模糊
  12. java 日历_java的日历类(Calendar)详解
  13. was英文读音_英语单词was怎么读
  14. PgMP项目集管理专家认证培---艾威PgMP培训机构
  15. 防火墙、DCD与TCP Keep alive
  16. 推荐几个优质公众号,一个个都好优秀!(大实话)
  17. 前端|网页制作秘密武器 之发光边框
  18. Java 生成 outLook .msg 文件
  19. 【排序】一次查找两元素
  20. 云南省二级c计算机考试试题,2015云南省计算机等级考试试题 二级C试题最新考试试题库(完整版)...

热门文章

  1. 【一天一门编程语言】JavaScript 语言程序设计极简教程
  2. WDS+MDT部署Windows7操作系统1—安装WDS服务器
  3. 如何在华三H3C交换机开启http或web界面远程登录管理
  4. Hackthebox:Silo Walkthrough(not use metasploit)
  5. StripSlashes 函数详解
  6. AR@制造业,拯救跨国公司的一根稻草
  7. 苏宁金融研究院在2017年成立区块链实验室 | 人工智能使人机交互成为现实
  8. 高性能远程桌面Splashtop 居家办公首选软件
  9. 纸上谈兵还是惊天谋划,百度神灯到底会不会显灵?
  10. JS数组转字符串方法总汇