SpringCloud整合Seata报错no available server to connect. 源码跟踪

  1. 通过控制台提示来到 NettyClientChannelManager 类中, 全局搜索 no available server to connect. 找到方法入口
在这里插入图片描述
  1. 进入 getAvailServerList() 找到 availList 来源

    在这里插入图片描述
  2. 通过lookup()跳转到对应配置实现类

在这里插入图片描述
在这里插入图片描述
  1. 通过 getAllInstances() 入口拿到所有实例

    在这里插入图片描述
  2. 查看 serviceInfo 来源

    在这里插入图片描述
20_2.png
  1. 这里面是在 serviceInfoMap 获取的, 全局搜索下 serviceInfoMap.put() 看看在哪添加的

    在这里插入图片描述
  2. 这里是通过第一行的 JSON.parseObject() 方法来获取 serviceInfo 对象的, 通过IDEA的栈帧可以跳转到该方法的前一个方法中进行查看

    在这里插入图片描述
  3. 这里可以看到他是通过调用远程API的方法来实现的, 一路向下找过去看看最终方法

在这里插入图片描述
24.png
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 到这里就可以看到我们实际发出的url了, 通过浏览器直接访问, 查看该url是否有效, 再调整对应参数即可

附带上本人另一篇博客 Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔记, 希望能给遇到问题的小伙伴提供一点帮助

https://blog.csdn.net/CJG753951/article/details/109233010

一开始找了很多博客一直没能解决整合的问题, 后面看了大佬的源码分析, 自己一步步DEBUG, 看自己的配置信息具体是在哪个步骤出了问题, 才发现了问题所在. 感谢大佬提供的解决问题的思路

https://www.freesion.com/article/7552502508/