SpringCloud和Zookeeper,成功注冊服務,卻無法獲取實體。怎么辦???情況如下
使用spring-cloud開發了2個服務,服務注冊使用zookeeper。
在zookeeper的zkCli.sh中能夠查看到兩個服務

然后通過其中cloud-order-service的專案,通過在controller中的以下代碼,訪問CLOUD-PAYMENT-SERVICE服務:

@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";
@Resource
private DiscoveryClient discoveryClient;
@Resource
private RestTemplate restTemplate;
@GetMapping("/consumer/payment/create")
public CommonResult<Payment> create(Payment payment){
log.info("***payment: {}", payment);
return restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, CommonResult.class);
}
結果是:

{
"timestamp": "2020-04-18T12:52:50.103+0000",
"status": 500,
"error": "Internal Server Error",
"message": "No instances available for CLOUD-PAYMENT-SERVICE",
"path": "/consumer/payment/create"
}
錯誤內容:

2020-04-18 20:52:50.092 ERROR 6656 --- [p-nio-80-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No instances available for CLOUD-PAYMENT-SERVICE] with root cause
java.lang.IllegalStateException: No instances available for CLOUD-PAYMENT-SERVICE
at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:119) ~[spring-cloud-netflix-ribbon-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:99) ~[spring-cloud-netflix-ribbon-2.2.1.RELEASE.jar:2.2.1.RELEASE]
uj5u.com熱心網友回復:
最后自己解決了。問題出在URL地址上。我用的zookeeper版本是3.6.0。
PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";
這種用全大寫的方式已經不行了,zookeeper上顯示的是小寫:cloud-payment-service 【取自服務注冊端的spring.application.name屬性】
我們也要用小寫才行PAYMENT_URL = "http://cloud-payment-service";
才能找到服務。
uj5u.com熱心網友回復:
eureka注冊的應該都是大寫的uj5u.com熱心網友回復:
嗯,zookeeper是大小寫區分
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/84843.html
標籤:Web 開發
上一篇:IDEA報錯 :不再支持源選項 5。請使用 6 或更高版本 不再支持目標選項 1.5。請使用 1.6 或更高版本。
下一篇:security+JWT權限問題
