Spring Netflix Ribbon不会抛出任何可用于MY-MICROSERVICE异常的实例

Spring Netflix Ribbon不会抛出任何可用于MY-MICROSERVICE异常的实例,spring,netflix-eureka,spring-cloud-netflix,netflix-ribbon,Spring,Netflix Eureka,Spring Cloud Netflix,Netflix Ribbon,我的应用程序使用Eureka和Ribbon。我正试着让两个微服务互相通话。下面是我关注的方法 @Autowired @LoadBalanced private RestTemplate client; @Autowired private DiscoveryClient dClient; public String getServices() { List<String> services = dClient.getServices(); List&l

我的应用程序使用Eureka和Ribbon。我正试着让两个微服务互相通话。下面是我关注的方法

@Autowired @LoadBalanced
private RestTemplate client;

@Autowired
private DiscoveryClient dClient;

public String getServices() {      
    List<String> services = dClient.getServices();
    List<ServiceInstance> serviceInstances = new ArrayList<>();
    List<String> serviceHosts = new ArrayList<>();       

    for(String service : services) {
        serviceInstances.addAll(dClient.getInstances(service));
    }

    for(ServiceInstance service : serviceInstances) {
       serviceHosts.add(service.getHost());
    }        

    //throws No instances available exception here
    try {
        System.out.println(this.client.getForObject("http://MY-MICROSERVICE/rest/hello", String.class, new HashMap<String, String>()));
    }
    catch(Exception e) {
        e.printStackTrace();
    }

    return serviceHosts.toString();
}
甚至Eureka仪表板也显示了两个已注册的服务。我觉得问题特别出在缎带上。这是我的配置文件

spring.application.name="my-microservice"

logging.level.org.springframework.boot.autoconfigure.logging=INFO

spring.devtools.restart.enabled=true
spring.devtools.add-properties=true

server.ribbon.eureka.enabled=true
eureka.client.serviceUrl.defaultZone = http://localhost:8761/eureka/

另一个微服务也有相同的配置,只是名称不同。这里有什么问题?

解决了。我在Eureka服务器上使用application.yml,在客户端使用application.properties。一旦我把所有东西都转换成yml,一切都很好

spring:
 application:
  name: "my-microservice"
 devtools:
  restart:
   enabled: true
  add-properties: true

logging:
 level:
  org.springframework.boot.autoconfigure.logging: INFO

eureka:
 client:
  serviceUrl:
   defaultZone: "http://localhost:8761/eureka/"

这是两个应用程序的yml文件,它们仅因应用程序名称不同而不同。

。我在Eureka服务器上使用application.yml,在客户端使用application.properties。一旦我把所有东西都转换成yml,一切都很好

spring:
 application:
  name: "my-microservice"
 devtools:
  restart:
   enabled: true
  add-properties: true

logging:
 level:
  org.springframework.boot.autoconfigure.logging: INFO

eureka:
 client:
  serviceUrl:
   defaultZone: "http://localhost:8761/eureka/"
这是两个应用程序的yml文件,它们仅因应用程序名称不同而不同