1. 程式人生 > >ribbon的註解使用報錯--No instances available for [IP]

ribbon的註解使用報錯--No instances available for [IP]

    使用RestTemplate類呼叫其他系統的url的時候,加上ribbon的註解@LoadBalanced上這個註解之後訪問,就報錯了。


報錯如下:


因為這裡你不能直接訪問地址,需要把地址改成你所呼叫的ur在eureka上註冊的application.name


將程式碼修改為如下,就可以訪問了

具體原因,我查看了一下原始碼和網上找了一下,貌似是在加了了註解 @LoadBalanced 之後,我們的r estTemplate 會走這個類RibbonLoadBalancerClient,斷點進入瞭如下的頁面,serverid必須是我們訪問的服務名稱 ,當我們直接輸入ip的時候獲取的server是null,就會丟擲異常

使用服務名稱如下圖:


仔細想了想,因為ribbon的作用是負載均衡,那麼你直接使用ip地址,那麼就無法起到負載均衡的作用,因為每次都是呼叫同一個服務,當你使用的是服務名稱的時候,他會根據自己的演算法去選擇具有該服務名稱的服務。