SpringCloud和Zookeeper,成功注册服务,却无法获取实例。怎么办?

[复制链接]
查看11 | 回复3 | 2021-1-27 05:35:02 | 显示全部楼层 |阅读模式
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]
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:35:02 | 显示全部楼层
最后自己解决了。
问题出在URL地址上。我用的zookeeper版本是3.6.0。
PAYMENT_URL="http://CLOUD-PAYMENT-SERVICE";
这种用全大写的方式已经不行了,zookeeper上显示的是小写:cloud-payment-service【取自服务注册端的spring.application.name属性】
我们也要用小写才行PAYMENT_URL="http://cloud-payment-service";
才能找到服务。
回复

使用道具 举报

千问 | 2021-1-27 05:35:02 | 显示全部楼层
eureka注册的应该都是大写的
回复

使用道具 举报

千问 | 2021-1-27 05:35:02 | 显示全部楼层
引用2楼混口饭吃的程序员的回复:eureka注册的应该都是大写的
嗯,zookeeper是大小写区分
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行