SpringCloud和Zookeeper,成功注册服务,却无法获取实例。怎么办???情况如下
使用spring-cloud开发了2个服务,服务注册使用zookeeper。
在zookeeper的zkCli.sh中能够查看到两个服务
然后通过其中cloud-order-service的项目,通过在controller中的以下代码,访问CLOUD-PAYMENT-SERVICE服务:
@Bean
@LoadBalanced
publicRestTemplategetRestTemplate(){
returnnewRestTemplate();
}
publicstaticfinalStringPAYMENT_URL="http://CLOUD-PAYMENT-SERVICE";
@Resource
privateDiscoveryClientdiscoveryClient;
@Resource
privateRestTemplaterestTemplate;
@GetMapping("/consumer/payment/create")
publicCommonResultcreate(Paymentpayment){
log.info("***payment:{}",payment);
returnrestTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class);
}
结果是:
{
"timestamp":"2020-04-18T12:52:50.103+0000",
"status":500,
"error":"InternalServerError",
"message":"NoinstancesavailableforCLOUD-PAYMENT-SERVICE",
"path":"/consumer/payment/create"
}
错误内容:
2020-04-1820:52:50.092ERROR6656---[p-nio-80-exec-5]o.a.c.c.C.[.[.[/].[dispatcherServlet]:Servlet.service()forservlet[dispatcherServlet]incontextwithpath[]threwexception[Requestprocessingfailed;nestedexceptionisjava.lang.IllegalStateException:NoinstancesavailableforCLOUD-PAYMENT-SERVICE]withrootcause
java.lang.IllegalStateException:NoinstancesavailableforCLOUD-PAYMENT-SERVICE
atorg.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:119)~[spring-cloud-netflix-ribbon-2.2.1.RELEASE.jar:2.2.1.RELEASE]
atorg.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:99)~[spring-cloud-netflix-ribbon-2.2.1.RELEASE.jar:2.2.1.RELEASE]
分 -->
|