簡體   English   中英

Eureka Server - 列出所有注冊的實例

[英]Eureka Server - list all registered instances

我有一個 Spring Boot 應用程序,它也是一個 Eureka 服務器。 我想列出所有已經注冊到這個 Eureka Server 的實例。 我該怎么做?

使用EurekaServerContextHolder.getInstance().getServerContext().getRegistry()獲取registry然后使用registry列出所有Applications

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);
        });
    });

如果您想獲得所有已注冊的應用程序。

  1. 需要開啟eureka的配置。

     eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ #register eureka as application register-with-eureka: true #fetch all thing, we can get applications here fetch-registry: true #also you can specify the instance renewal time. server: enable-self-preservation: false
  2. 現在我們可以獲取已注冊的應用程序,但該類必須放在 eureka 應用程序的包中。 [因為我們需要自動裝配 PeerAwareInstanceRegistry]

在此處輸入圖片說明

@Autowired
PeerAwareInstanceRegistry registry;

public void eurekaApplications() {
    Applications applications = registry.getApplications();
    //TODO add your code here.
}

這對我有用,在 eureka 上注冊所有服務並顯示每個服務的信息

@Autowired
private DiscoveryClient discoveryClient;

public List<ServiceInstance> getApplications() {

    List<String> services = this.discoveryClient.getServices();
    List<ServiceInstance> instances = new ArrayList<ServiceInstance>();
    services.forEach(serviceName -> {
        this.discoveryClient.getInstances(serviceName).forEach(instance ->{
            instances.add(instance);
        });
    });
    return instances;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM