@FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本
Posted fenglangjuxu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本相关的知识,希望对你有一定的参考价值。
今天遇到了很奇葩的问题,我本机的是以test环境启动的,调用另一个服务接口的时候返回参数却不同,调用接口是没错,怎么会这样,排查了很久,发现在eureka上注册的另一个服务是testone环境,而这个人testone是在k8s容器外面, 我部署的另一个服务是在k8s容器内部的。所以,造成了一直在调用k8s容器外同一个服务,实际我要调用k8s内部的这个服务。
下面是截图大概介绍下步骤:
首先,先排查 active profiles 配置启动环境为test, 并确保启动成功(启动成功后的日志显示test)
其次,把需要调用的另一方服务部署在test环境并启动(我们公司自己的项目,所以,我可以部署),然后到eureka上查询到此项目,可以看到有两个地址,然后点击上面打开,会看到地址,然后,此地址端口号后面写上swagger,到swagger上找到此项目的接口,可以看到正好是我刚才调用的接口,但是参数是旧参数,这个地址所在的服务项目,虽然也是我需要的,但是,这个在k8s容器外面,我没有部署最新版(因为我们的服务都移动k8s容器里了,外面的都弃用),而注册到eureka是容器外的,所以,要么让容器内的注册到eureka上,要么部署容器外的最新版项目。
还有一点需要注意,我当前调试运行的自己的项目是位于k8s容器内部。
以上是关于@FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本的主要内容,如果未能解决你的问题,请参考以下文章
FeignClient注解及参数问题---SpringCloud微服务