eureka获取注册服务
eureka client获取注册服务
首先在启动类中增加@EnableDiscoveryClient
其次在spring 项目中注入
1 2
| @Autowired private DiscoveryClient discoveryClient;
|
然后通过以下方式进行获取
1
| List<ServiceInstance> list = discoveryClient.getInstances("analyze");
|
analyze为注册服务名
eureka server获取注册服务
- 方法1
首先在配置文件中增加
1
| eureka.client.fetch-registry=true
|
其次在spring 项目中注入
1 2
| @Autowired private DiscoveryClient discoveryClient;
|
然后通过以下方式进行获取
1
| List<ServiceInstance> list = discoveryClient.getInstances("analyze");
|
analyze为注册服务名
这种方法有一定的延迟,原理和Client一样,如果需要及时更新那么需要配置一下其他参数,及时更新注册信息.
server
1 2 3 4 5
| #清理时间间隔 eureka.server.eviction-interval-timer-in-ms=10000 #关闭自我保护模式。自我保护模式是指,出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式。 #自我保护:一个服务长时间没有发送心跳包,eureka也不会将其删除,默认为true。 eureka.server.enable-self-preservation=false
|
client
1 2 3 4
| #发送时间间隔 eureka.instance.lease-renewal-interval-in-seconds=10 #多长时间过期 eureka.instance.lease-expiration-duration-in-seconds=30
|
- 方法2
如果需要在server中获取,强烈建议使用这种方式,优点就是和dashboard状态保持一致。
1 2 3 4 5 6 7 8
| PeerAwareInstanceRegistry registry = EurekaServerContextHolder.getInstance().getServerContext().getRegistry(); Applications applications = registry.getApplications();
applications.getRegisteredApplications().forEach((registeredApplication) -> { registeredApplication.getInstances().forEach((instance) -> { System.out.println(instance.getAppName() + " (" + instance.getInstanceId() + ") : " + response); }); });
|
参考
- Spring Cloud中文文档
- Spring Cloud doc
- Eureka Server - list all registered instances