Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Spring RestTemplate netflix LoadBlancher未配置httpClient头主机_Spring Boot_Apache Httpclient 4.x_Resttemplate_Netflix Eureka - Fatal编程技术网

Spring boot Spring RestTemplate netflix LoadBlancher未配置httpClient头主机

Spring boot Spring RestTemplate netflix LoadBlancher未配置httpClient头主机,spring-boot,apache-httpclient-4.x,resttemplate,netflix-eureka,Spring Boot,Apache Httpclient 4.x,Resttemplate,Netflix Eureka,我们有一个基于Spring云的复杂应用程序Netflix Loadbalancer,用于在微服务之间进行呼叫ms1-->ms2 我们正在使用restemplate.exchange调用URI主机名,该主机名是用于FQDN查找的Eureka键 这种配置适用于其他微服务,事实上RESTTemplatebean适用于不同组件的微服务调用 接收rest调用的是Cloud Foundry Go router,我认为它只是一个ngineX代理服务器,httpClient请求的头变量应设置为“Host”:“F

我们有一个基于Spring云的复杂应用程序Netflix Loadbalancer,用于在微服务之间进行呼叫
ms1-->ms2
我们正在使用
restemplate.exchange
调用URI主机名,该主机名是用于FQDN查找的Eureka键

这种配置适用于其他微服务,事实上RESTTemplatebean适用于不同组件的微服务调用

接收rest调用的是Cloud Foundry Go router,我认为它只是一个ngineX代理服务器,httpClient请求的头变量应设置为“Host”:“FQDN”,这允许代理将请求路由到空间中的适当实例

问题:

来自ms的httpClient向ms发出呼叫

CompletionException。原因:org.springframework.web.client.httpclienterror异常:404未找到
这是来自CF go路由器(简单代理服务器)的响应,请求永远不会从ms实例获取http-->消息

当RestClient配置请求时,它将头“Host”设置为
localhost:8090
或ms主机名是什么

讨论相关问题: 显然,我们这里有一个配置问题。 有关于netflix ribbon loadbalancer客户端如何设置httpClient头的建议吗?
什么包类拦截器具有这种魔力?
哪些配置变量会影响这一点

代码调试表明netflix.client.SimpleVipAddressResolver正在运行

我们一直跟踪调试到Apache httpClient,它的头主机设置为ms主机名,在netflix httpClient包装中也设置为该值

我试图创建一个简单的参考实现,但是做不到

有关于故障排除的建议吗? 在哪里查看或阅读什么
com.netflix
软件包上的文档

使用卡姆登弹簧。使用配置文件

从内存调试

ClientClassName:com.netflix.niws.client.http.RestClient
VipAddressResolverClassName:com.netflix.client.SimpleVipAddressResolver
NIWSServerListClassName:com.netflix.loadbalancer.ConfigurationBasedServerList
NFLoadBalancerClassName:com.netflix.loadbalancer.ZoneAwareLoadBalancer
NFLoadBalancerRuleClassName:com.netflix.loadbalancer.AvailabilityFilteringRule
EnablePrimeConnections:false, 
CustomSSLSocketFactoryClassName:null, 
TrustStorePassword:null, 
EnableConnectionPool:true, 
listOfServers:, 
OkToRetryOnAllOperations:false, 
RequestIdHeaderName:null

我们怀疑某些application.properties、.yml或bootstrap.yml正在扫描路径中的某个位置设置或未设置

我们刚刚将平台spring boot
1.3.x
升级到
1.4.2
。 ms入站控制器具有注释

@RequestHeader HttpHeaders httpHeaders
这就是我们附加到restTemplate中的内容。执行作为参数,并最终将其作为用于调用ms的请求头发送到rest netflix httpClient。CF上的Go路由器必须使用该值来执行对实例的代理

显然,在升级过程中,有两件事发生了

A) 版本
1.3.2
中的启动控制器@RequestHeader未放置头
主机

B) 以前版本的spring Cloud netflix功能区使用功能区查找重写了
Host
httpHeader值

不管怎样,都没有特殊的拦截器。 Spring cloud netflix Eureka将接受您提供的任何HttpHeader(即使该header是键:
Host
),并使用这些值