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