日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Eureka出现No instances available for xxx的五种解决方案(不能解决你骂我)

發布時間:2024/10/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Eureka出现No instances available for xxx的五种解决方案(不能解决你骂我) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、首先我們都知道Eureka中進行服務的消費有三種方式

1、DiscoveryClient:通過元數據獲取服務信息
2、LoadBalancerClinet:Ribbon負載均衡器
3、@LoadBalanced:通過注解開啟Ribbon的負載均衡器

2、出現以上的錯誤的原因是有五種可能情況


第一種

當你使用LoadBalancerClient方式時,沒有去掉@LoadBalanced注解;導致兩種方式沖突。

以下為錯誤實例

@Configuration public class ConsumerConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate();} } public List<Product> getProductListByLoadBalancerClient() {StringBuffer sb = null;ServiceInstance instance = loadBalancerClient.choose("service-provider");if (instance == null) {return null;}sb = new StringBuffer();sb.append("http://"+instance.getHost()+":"+instance.getPort()+"/product/list");ResponseEntity<List<Product>> exchange = restTemplate.exchange(sb.toString(), HttpMethod.GET, null, new ParameterizedTypeReference<List<Product>>() {});return exchange.getBody();}

解決方法:單獨使用其中一種方式,不要都碼上去



第二種

使用@LoadBalanced注解方式時,需要這個類需要我們通過@Bean注入加上@LoadBanlance
將下面的代碼加入到啟動類或者Configuration類中,將其注入到容器中。

@Configuration public class ConsumerConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate();} }

解決方法:如上面代碼所示



第三種

導入了兩個依賴spring-cloud-starter-netflix-eureka-client 和 spring-cloud-starter-netflix-ribbon造成沖突
因為spring-cloud-starter-netflix-eureka-client 已經默認集成了 spring-cloud-starter-netflix-ribbon

演示錯誤做法:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-netflix-ribbon</artifactId><version>2.1.4.RELEASE</version></dependency>

解決方法:去掉spring-cloud-netflix-ribbon依賴即可



第四種

服務直接的調用,如果要使用服務名進行調用,應該使用下面這個spring.application.name的值進行訪問






第五種

錯誤原因是沒有進行服務發現,導致使用RestTemplate的時候始終找不到服務地址。
解決方式就是在服務提供者的啟動類上加上@EnableDiscoveryClient注解然后重啟服務提供者,目的就是讓這個服務能夠被發現,也就是消費者使用RestTemplate去調用服務提供者的時候,去注冊中心找這個服務。

總結

以上是生活随笔為你收集整理的Eureka出现No instances available for xxx的五种解决方案(不能解决你骂我)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。