如何在eureka服务器上为每个eureka客户端注册多个服务?

时间:2018-05-16 03:19:05

标签: netflix-eureka spring-cloud-netflix

我开始学习Eureka API。我使用spring boot和相应的客户端创建了一个Eureka Server。 为了开始,我创建了一个Eureka客户端并在Server中注册。客户端正在公开没有路径的get服务

@GetMapping("/")

这很好用。一旦我使用DiscoveryClient获得服务器实例,如下所示,我可以点击服务

List<ServiceInstance> list = client.getInstances(service);
    if (list != null && list.size() > 0) {
        URI uri = list.get(0).getUri();
        String url=uri.toString();
        if (url != null) {
            return (new RestTemplate()).getForObject(url, String.class);
        }
    }

但我不知道如何配置具有路径的服务,例如

@GetMapping("/greetings")

现在我可以将其硬编码为

List<ServiceInstance> list = client.getInstances(service);
    if (list != null && list.size() > 0) {
        URI uri = list.get(0).getUri();
        String url=uri.toString()+"/greetings";
        if (url != null) {
            return (new RestTemplate()).getForObject(url, String.class);
        }
    }

或者在客户端的bootstrap.yml中将其注册为服务名称

spring:
  application:
    name: eurekaClient2/greetings

但还有其他方法吗? 如果我想公开获取服务和邮政服务怎么办? 在这种情况下如何配置?

1 个答案:

答案 0 :(得分:0)

从Eureka服务器,您将无法获得其实例在Eureka服务器中注册的服务提供的端点。

Eureka服务器的响应仅包含有关应用程序可用性的信息,如主机名,IP地址等。

客户端必须对要调用的其他服务的端点(或从属性中读取)进行硬编码。 Eureka仅提供已注册实例的主机名(以及其他相关详细信息)。

spring.application.name用作service-id。服务使用此service-id将自身注册到Eureka服务器注册表。

相关问题