绝了 兄弟们!!!今天在家学习阿里的seata。微服务启动之后一直报这个错。首先先说下我看见这个错误的时候自我反应:

2022-04-16 14:28:51.183 ERROR 56432 --- [imeoutChecker_1] i.s.c.rty.NettyClientChannelManager  : no available service 'null' found, please make sure registry config correct
2022-04-16 14:28:51.199 ERROR 56432 --- [imeoutChecker_2] i.s.c.rty.NettyClientChannelManager  : no available service 'null' found, please make sure registry config correct
2022-04-16 14:29:01.185 ERROR 56432 --- [imeoutChecker_1] i.s.c.rty.NettyClientChannelManager  : no available service 'null' found, please make sure registry config correct
2022-04-16 14:29:01.199 ERROR 56432 --- [imeoutChecker_2] i.s.c.rty.NettyClientChannelManager  : no available service 'null' found, please make sure registry config correct

我的seata版本是1.1.0的,找了很多原因猜到问题是出在了file.conf上。1.0.0之后的版本改为了vgroupMapping。

 第一:百度

的确百度可以解决很多问题,有很多问题在百度上能够很直观的看到答案。我的这个问题最终也是在百度上找到解决方案的

但是网上的版本有很多啊,我找了很多博客,试了很多遍都没有解决。对于一个开源的服务而言,它的版本是多元化的,同样对于同一个服务对于不同的版本而言,它的解决方案也是不一样的。于是我就踩了很多坑。直到看到一篇博客是直接打断点进入到NettyClientChannelManager这个类中发现报错的原因才解决的。

可能平时在开发过程中,我们遇到报错查看错误的原因,这个时候我们会想到打断点去查找错误。但是为什么对于一个开源的框架而言,我们却往往丧失了最基本的思考能力,也许是我们的基本功不够,也许是我们对于开源的框架觉的它太过遥远。seata不也是用java写的吗,直接打断点看啊,都给我看!!!

直接打断点查找原因吧 (顺便说一下:我是直接在NettyClientChannelManager这个类中找到出错那行代码进行追踪的)

发现是这个availList为空时,才会报这个错,找到getAvailServerList方法。

 发现了这个值availInetSocketAddressList为空,那么就只有那个lookup方法为空了,继续追踪

 发现这边报空的原因的是getServiceGroup()这个方法为空,返回上级继续追踪

这个方法会从我们file.conf里找vgroupMapping却找不到,因为我配的是vgroup_mapping。

想要了解更多编程小知识,快来关注公众号:爪哇开发吧!每周会不定时的进行更新。

 

 

更多推荐

no available service ‘null‘ found, please make sure registry config correct