热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

解决SpringCloudFeign请求时附带请求头的问题

这篇文章主要介绍了解决SpringCloudFeign请求时附带请求头的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

问题描述

Feign 在请求时是不会将 request 的请求头带着请求的,导致假如 Feign 调用的接口需要请求头的信息,比如当前用户的 token 之类的就获取不到

解决方案 FeignConfiguration

通过实现 Feign 的 RequestInterceptor 将从上下文中获取到的请求头信息循环设置到 Feign 请求头中。

/**
 * feign 配置文件
 * 将请求头中的参数,全部作为 feign 请求头参数传递
 * @author: linjinp
 * @create: 2020-06-28 09:54
 **/
@Configuration
public class FeignConfiguration implements RequestInterceptor {
  @Override
  public void apply(RequestTemplate requestTemplate) {
    HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
    Enumeration headerNames = request.getHeaderNames();
    if (headerNames != null) {
      while (headerNames.hasMoreElements()) {
        String name = headerNames.nextElement();
        String values = request.getHeader(name);
        requestTemplate.header(name, values);
      }
    }
  }
}

使用

通过 cOnfiguration= FeignConfiguration.class 指定这次 Feign 请求走哪种配置

@FeignClient(name = "admin", cOntextId= "factoryPlmseriesRelation", cOnfiguration= FeignConfiguration.class)
//@FeignClient(name = "admin2", cOntextId= "factoryPlmseriesRelation", url = "http://127.0.0.1:8582/", cOnfiguration= FeignConfiguration.class)
public interface FeignFactoryPlmseriesRelationService {

  /**
   * 根据当前用户,获取工厂与PLM关联关系
   * @return
   */
  @GetMapping(value = "/factoryPlmseriesRelation/getFactoryPlmseriesRelation")
  ErrorMsg> getFactoryPlmseriesRelation();

}

配置修改

主要是 hystrix.command.default.execution.isolation 后面的配置,需要将 hystrix 配置为信号量模式,否则会出现由于隔离策略导致获取不到请求头

# ribbon 配置
ribbon:
 OkToRetryOnAllOperations: false #对所有操作请求都进行重试,默认false
 ReadTimeout: 5000  #负载均衡超时时间,默认值5000
 ConnectTimeout: 5000 #ribbon请求连接的超时时间,默认值2000
 MaxAutoRetries: 0   #对当前实例的重试次数,默认0
 MaxAutoRetriesNextServer: 1 #对切换实例的重试次数,默认1
# hystrix 配置
hystrix:
 command:
  default: #default全局有效,service id指定应用有效
   execution:
    timeout:
     #是否开启超时熔断
     enabled: true
    isolation:
     thread:
      timeoutInMilliseconds: 10000 #断路器超时时间,默认1000ms
     # hystrix 隔离模式改为信号量模式,feign 才能获取到父线程中的请求头
     strategy: SEMAPHORE
     # 允许的并发量,默认值为 10
     semaphore:
      maxConcurrentRequests: 100

总结

到此这篇关于解决Spring Cloud Feign 请求时附带请求头的问题的文章就介绍到这了,更多相关Spring Cloud Feign 请求头内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 负载均衡基础概念与技术解析
    随着互联网应用的不断扩展,用户流量激增,业务复杂度显著提升,单一服务器已难以应对日益增长的负载需求。负载均衡技术应运而生,通过将请求合理分配到多个服务器,有效提高系统的可用性和响应速度。本文将深入探讨负载均衡的基本概念和技术原理,分析其在现代互联网架构中的重要性及应用场景。 ... [详细]
  • 本文详细解析了神州数码DCRS5980交换机的基础配置流程和技术要点。首先,通过进入配置模式(`enable`),设置主机名(`hostname 5980`),并创建VLAN,逐步介绍了设备的初始设置步骤。此外,还涵盖了端口配置、IP地址分配及安全设置等关键环节,为用户提供了全面的配置指导。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 黄聪:MySQL主从复制配置,实现高效读写分离
    大型网站为应对高并发访问,不仅需要在前端实现分布式负载均衡,还需在数据业务和访问层采取有效措施。采用传统的数据结构已无法满足需求,通过配置MySQL主从复制,可实现高效的读写分离,显著提升系统性能和稳定性。 ... [详细]
  • 总数 | 小规模算法动态规划第3讲:LeetCode 62 不同路径详解 | 从自顶向下到自底向上的动态规划方法分析
    总数 | 小规模算法动态规划第3讲:LeetCode 62 不同路径详解 | 从自顶向下到自底向上的动态规划方法分析 ... [详细]
  • 近年来,BPM(业务流程管理)系统在国内市场逐渐普及,多家厂商在这一领域崭露头角。本文将对当前主要的BPM厂商进行概述,并分析其各自的优势。目前,市场上较为成熟的BPM产品主要分为两类:一类是综合型厂商,如IBM和SAP,这些企业在整体解决方案方面具有明显优势;另一类则是专注于BPM领域的专业厂商,它们在特定行业或应用场景中表现出色。通过对比分析,本文旨在为企业选择合适的BPM系统提供参考。 ... [详细]
  • 期末Web开发综合实践项目:运用前端技术打造趣味小游戏体验
    期末Web开发综合实践项目中,学生通过运用HTML、CSS和JavaScript等前端技术,设计并实现了一款趣味性十足的小游戏。该项目不仅检验了学生对前端基础知识的掌握情况,还提升了他们的实际操作能力和创意设计水平。视频链接展示了项目的最终成果,直观呈现了游戏的互动性和视觉效果。 ... [详细]
  • 本文深入探讨了 Spring Cloud 微服务架构中 Gateway 组件的应用,详细介绍了其在实现高效请求路由与过滤方面的关键作用。文章首先从基本配置入手,逐步讲解了如何通过静态路由和动态路由实现灵活的服务访问控制。此外,还特别介绍了如何配置 Gateway 以自动从 Nacos 服务注册中心拉取服务列表,进一步提升系统的可维护性和扩展性。 ... [详细]
  • IIS 7及7.5版本中应用程序池的最佳配置策略与实践
    在IIS 7及7.5版本中,优化应用程序池的配置是提升Web站点性能的关键步骤。具体操作包括:首先定位到目标Web站点的应用程序池,然后通过“应用程序池”菜单找到对应的池,右键选择“高级设置”。在一般优化方案中,建议调整以下几个关键参数:1. **基本设置**: - **队列长度**:默认值为1000,可根据实际需求调整队列长度,以提高处理请求的能力。此外,还可以进一步优化其他参数,如处理器使用限制、回收策略等,以确保应用程序池的高效运行。这些优化措施有助于提升系统的稳定性和响应速度。 ... [详细]
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • 如何在主服务器响应变慢时,自动切换至备用服务器地址以确保服务连续性
    在主服务器响应速度下降时,如何通过编程实现自动切换至备用服务器地址,以确保服务的连续性和稳定性。本文将介绍一种基于PHP和MySQL的解决方案,通过监测主服务器的响应时间,当检测到延迟过高时,自动切换至备用服务器接口,从而保障系统的高可用性。 ... [详细]
  • 本文深入解析了 Golang 中的异步 API,并通过具体的应用实例展示了其强大功能。文章不仅探讨了 Golang 和 Erlang 在并行处理方面的核心理念,还详细介绍了如何利用通道(channel)和 goroutine 实现高效的并发编程。例如,通过 `ch := make(chan int)` 创建通道,并使用 `go func(ch chan int)` 启动 goroutine 来处理异步任务。此外,文章还提供了多个实际案例,帮助读者更好地理解和应用这些概念。 ... [详细]
  • Zuul过滤器:深入解析与应用优化
    在服务网关中实现过滤器,只需继承抽象类并实现其定义的四个关键方法,即可对请求进行拦截和处理。过滤器具有两大核心功能:一是路由功能,负责将外部请求转发至具体的微服务实例,实现外部访问的统一入口;二是过滤功能,用于对请求进行预处理和后处理,增强系统的安全性和性能。通过合理配置和优化过滤器,可以显著提升服务网关的整体效能。 ... [详细]
  • 程序员们欢呼雀跃:微软正式推出GitHub安卓版应用预览版,新增暗黑模式支持
    近日,GitHub正式发布了面向Android用户的移动应用预览版,这一消息让众多程序员兴奋不已。新版本不仅支持暗黑模式,还优化了用户体验,为开发者提供了更加便捷的代码管理和协作工具。此前,GitHub已为iOS用户推出了相应的移动应用,此次Android版的发布进一步扩大了其在移动开发领域的影响力。 ... [详细]
  • Nginx入门指南:从零开始掌握基础配置与优化技巧
    Nginx入门指南:从零开始掌握基础配置与优化技巧 ... [详细]
author-avatar
陈宥治政和瑋男
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有