SpringCloud整合Seata报错no available server to connect. 源码跟踪
  1. 通过控制台提示来到 NettyClientChannelManager 类中, 全局搜索 no available server to connect. 找到方法入口

    SpringCloud整合Seata报错no available server to connect_java
  2. 进入 getAvailServerList() 找到 availList 来源

    SpringCloud整合Seata报错no available server to connect_java_02
  3. 通过lookup()跳转到对应配置实现类

    SpringCloud整合Seata报错no available server to connect_java_03SpringCloud整合Seata报错no available server to connect_java_04

  4. 通过 getAllInstances() 入口拿到所有实例

    SpringCloud整合Seata报错no available server to connect_java_05
  5. 查看 serviceInfo 来源

    SpringCloud整合Seata报错no available server to connect_java_06

  6. 这里面是在 serviceInfoMap 获取的, 全局搜索下 serviceInfoMap.put() 看看在哪添加的

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

    SpringCloud整合Seata报错no available server to connect_java_07
  8. 这里可以看到他是通过调用远程API的方法来实现的, 一路向下找过去看看最终方法

    SpringCloud整合Seata报错no available server to connect_java_08SpringCloud整合Seata报错no available server to connect_java_09SpringCloud整合Seata报错no available server to connect_java_10SpringCloud整合Seata报错no available server to connect_java_11SpringCloud整合Seata报错no available server to connect_java_12

  9. 到这里就可以看到我们实际发出的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/