今天同事遇到一个奇怪的问题,在web的项目中调用下层服务中的一个方法,运行提示错误,显示找不到该方法,看了下打印的日志:
image.png
日志中可以看到是dubbo的问题
所以看了下dubbo的配置,消费者配置如下:
引用了该服务,并且引用的服务版本是2.0的
image.png
然后去看生产者配置,发现竟然没有配置该服务:
image.png
那么问题来了既然没有的话,理论上应该是这个服务的其他方法也调用不到的啊.
然后仔细观察了一下,发现只有findByIds这个方法调用不到,而且这个方法还是本次迭代开发的时候新加的,那么大胆猜测下会不会adminService这个服务以前确实有个2.0的版本在dubbo服务上注册管理着,这个2.0因为是老的版本并没有findByIds这个方法,所以出现以上情况.猜测到问题的原因,就尝试修复下:
dubbo生产者添加配置如下
<dubbo:service interface="com.mysteel.admin.AdminService" ref="adminService" version="2.1"/>
dubbo消费者修改配置如下
<dubbo:reference interface="com.mysteel.admin.AdminService" id="adminService" timeout="20000" version="2.1"/>
然后再去执行项目,ok,搞定
注意: 这里更新服务版本的时候,要和老版本的开发人员进行沟通,之前的方法是否不再使用了,然后再放心进行更新版本即可