SpringCloud整合Seata报错no available server to connect. 源码跟踪
- 通过控制台提示来到 NettyClientChannelManager 类中, 全局搜索 no available server to connect. 找到方法入口
-
进入 getAvailServerList() 找到 availList 来源
-
通过lookup()跳转到对应配置实现类
-
通过 getAllInstances() 入口拿到所有实例
-
查看 serviceInfo 来源
-
这里面是在 serviceInfoMap 获取的, 全局搜索下 serviceInfoMap.put() 看看在哪添加的
-
这里是通过第一行的 JSON.parseObject() 方法来获取 serviceInfo 对象的, 通过IDEA的栈帧可以跳转到该方法的前一个方法中进行查看
-
这里可以看到他是通过调用远程API的方法来实现的, 一路向下找过去看看最终方法
- 到这里就可以看到我们实际发出的url了, 通过浏览器直接访问, 查看该url是否有效, 再调整对应参数即可
附带上本人另一篇博客 Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔记, 希望能给遇到问题的小伙伴提供一点帮助
一开始找了很多博客一直没能解决整合的问题, 后面看了大佬的源码分析, 自己一步步DEBUG, 看自己的配置信息具体是在哪个步骤出了问题, 才发现了问题所在. 感谢大佬提供的解决问题的思路