bug描述:
在一个请求方法中会调用到feign去获取其他的数据。
List<Demo> list = aaaFeignApi.getData(personSelectGetParam);
在调用的时候,打断点到feign的地方,数据是存在的,并且有15条。但是返回到上面代码的时候数据就没了。
下面的代码是上面的feign调用的具体代码,下面的代码返回了15条数据。但是返回到上面的list就没了
List<Demo> list = aaaService.getData(param);
上面的是伪代码,下面的是真实业务场景。
方法执行的结果是15条数据,返回到变量里面就没了。

在看看结果:

项目背景:
这个项目使用的是springboot,feign调用的是另外一个模块里面的接口。
使用nacos、jekins部署服务,
这个feign是很早以前就已经写好了,现在需要对其功能进行一些修改。
所有就改了aaaService 所调用的mapper 里面的sql语句,
没改之前的sql查出来的是0条。
改了之后的sql查出来的数据是15条。
解决方法:
问题出现的原因:
调用的feign使用nacos里面注册的feign地址,由于我们修改的代码只是在本地修改了,并没有推到开发环境。所以它的请求是转发到服务器的IP地址去了,所以这个feign请求的数据是通过以前的旧sql 返回的数据。
为什么本地idea代码debug会出现返回的数据有15条,可能是idea的优化,将请求在本地模拟了的原因,实际的请求本没有打到本地的服务器,而是打到了nacos注册的其他服务器。虽然咱启动了服务也注册到了nacos,但是不知道为什么这个feign的请求就是不能打到本地。
解决:指定服务名称即可。
将这个名字指定为自己特殊的名字 aaa ,并且修改yml里面自己服务的名字 aaa,让这两个服务名对应起来。feign调用的请求就会打到本地的服务里面。
本地的服务是你修改了的最新代码,没有提交到服务器里面的。
@FeignClient(name = "aaa", fallback = aaaSupport.class)
spring:
application:
name: aaa
总结:
造成这个bug的根本原因就是因为我不知道feign调用的到底是那个服务器的代码。
这个feign请求一直请求到了远程其他服务器的旧代码,所以查不到数据。
如果我们指定了feign的请求服务名,并且把我们的服务名改为对应的服务名就可以指定feign的请求精确的请求到本地的修改测试的代码中来。
参考文章列表:
- 没有参考文章,自己调试出来。

4069

被折叠的 条评论
为什么被折叠?



