根据这篇博客 https://spring.io/blog/2015/07/14/microservices-with-spring,它基于Eureka服务发现,当服务发现正常工作时。
但是当切换到使用Consul而非Eureka时,服务发现就无法工作,并收到以下错误提示:
但是当切换到使用Consul而非Eureka时,服务发现就无法工作,并收到以下错误提示:
java.lang.IllegalStateException: No instances available for ACCOUNTS-SERVICE
at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:79)
at org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor.intercept(LoadBalancerInterceptor.java:46) ...
更新:在提供了正确的健康检查端点后(请参见下面的答案),通过在bootstrap.yml中提供Consul服务器的正确主机和端口(在“引导”阶段加载基于Consul的PropertySource),将服务部署到Cloud Foundry:
---
spring:
profiles: cloud
cloud:
consul:
host: <consul host or ip>
port: 8500
Consul正在注册服务,但状态为关键状态(失败)!
感激任何帮助或指引。
谢谢。