我开始学习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
但还有其他方法吗? 如果我想公开获取服务和邮政服务怎么办? 在这种情况下如何配置?
答案 0 :(得分:0)
从Eureka服务器,您将无法获得其实例在Eureka服务器中注册的服务提供的端点。
Eureka服务器的响应仅包含有关应用程序可用性的信息,如主机名,IP地址等。
客户端必须对要调用的其他服务的端点(或从属性中读取)进行硬编码。 Eureka仅提供已注册实例的主机名(以及其他相关详细信息)。
spring.application.name
用作service-id。服务使用此service-id将自身注册到Eureka服务器注册表。