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, 看自己的配置信息具體是在哪個步驟出了問題, 才發現了問題所在. 感謝大佬提供的解決問題的思路