首页 > 国际新闻

Feign 调用丢失Header的解决方案

文章作者:来源:www.kuisparlay.com时间:2020-02-14



Problem

Feign用于Spring Cloud中微服务之间的调用,但默认情况下,Feng调用缺少标头请求标头的远程服务。

解决方案

首先,您需要编写一个假装请求拦截器。通过实现请求拦截器接口,您可以完成所有的假装请求,传递请求头和请求参数。

假装请求拦截器

通过配置文件配置所有FeignClient。要在测试后使用Fang BaseCauserquesterceptor

或配置FeignClient使用该Fang BaseCauserquesterceptor

时,可以正常使用上述解决方案。但是有新的问题。

在转发Fan的请求头时,如果HYSTRIX打开,HYSTRIX的默认隔离策略是线程(线程隔离策略),因此在转发拦截器中无法获得请求的请求头信息。

默认隔离策略可以被修改为信号量模式:

Hestrix . command . default . execution . isolation . strategy=信号量

但是信号量模式不是官方推荐的隔离策略;另一个解决方案是定制海斯特里克斯的隔离政策。

Custom Policy

hystrixconcurrencyStrategy是为开发人员提供的自定义Hashtrix内部线程池及其队列的策略,以及包装可调用的方法和传递上下文变量的方法。因此,它可以继承HystrixConcurrencyStrategy并实现自己的并发策略。

结果,解决了假装调用丢失的请求头的问题。