如何使用netflix-eureka获得注册的微服务

问题描述

我使用Netflix的Eureka注册了许多微服务,也使用了Spring Cloud Config。但是,当我更新application.properties时,我需要重新启动应用程序以应用新属性

重新启动该应用程序有点烦人,因此在Google上搜索它,发现使用Netflix Eureka获得了注册的微服务,并使用了Spring Boot执行器对其进行了刷新,但是我没有获得注册的微服务。

简而言之:如何使用Netflix Eureka获得注册的微服务?

解决方法

如果您尝试使用eureka来确定服务位置,那么我强烈建议您在客户端使用功能区。因此,您无需在应用程序上进行任何其他更改。请看一看。 https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-ribbon.html

,

您可以使用com.netflix.discovery.EurekaClient界面以编程方式访问Eureka的注册表。

例如,将刷新发送到某些服务的所有实例:

@RestController
public class EurekaOperationsController {
  @Autowired
  private EurekaClient eurekaClient;
  @Autowired
  private RestTemplate restTemplate;

  @PostMapping("/{serviceName}")
  public void refreshAllInstancesOf(@RequestParam String serviceName) {
    Application application = eurekaClient.getApplications().getRegisteredApplications(serviceName);
    application.getInstances().forEach(instanceInfo -> {
      restTemplate.postForEntity(instanceInfo.getHomePageUrl() + "actuator/refresh",null,Void.class);
    });
  }
}

这可以在任何Eureka客户端内部,包括Eureka服务本身,因为它应该自行注册为客户端。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...