问题描述
我使用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服务本身,因为它应该自行注册为客户端。