1

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

重新启动应用程序有点烦人,所以搜索了一下,发现使用 Netflix Eureka 获取注册的微服务并使用 spring boot actuator 刷新它,但我未能获得注册的微服务。

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

4

2 回答 2

1

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 服务本身,因为它应该自我注册为客户端。

于 2020-10-29T16:55:29.193 回答
0

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

于 2020-10-29T16:15:41.237 回答