Spring Cloud 获取注册中心所有服务以及服务下的所有实例

注册中心现有服务与实例数:

在任意客户端填写如下代码:

/**
 * import org.springframework.cloud.client.ServiceInstance;
 * import org.springframework.cloud.client.discovery.DiscoveryClient;
 *
 * 获取每一个服务下面实例
 * 测试时,可以使用多个端口启动服务实例
 */
@Autowired
private DiscoveryClient discoveryClient;

@GetMapping("/serviceurl")
public Map<String, List<ServiceInstance>> serviceUrl() {
    Map<String, List<ServiceInstance>> msl = new HashMap<>();
    List<String> services = discoveryClient.getServices();
    for (String service : services) {
        List<ServiceInstance> sis = discoveryClient.getInstances(service);
        msl.put(service, sis);
    }
    return msl;
}

  

返回结果:

{
    "XXXXX-microservice-testprovider": [
        {
            "host": "XXX.XXX.XXX.XXX",
            "port": 30001,
            "metadata": {
                "management.port": "30001",
                "jmx.port": "54767"
            },
            "uri": "http://XXX.XXX.XXX.XXX:30001",
            "serviceId": "XXXXX-MICROSERVICE-TESTPROVIDER",
            "secure": false,
            "instanceInfo": {
                "instanceId": "XXX.XXX.XXX.XXX:XXXXX-microservice-testprovider:30001",
                "app": "XXXXX-MICROSERVICE-TESTPROVIDER",
                "appGroupName": null,
                "ipAddr": "XXX.XXX.XXX.XXX",
                "sid": "na",
                "homePageUrl": "http://XXX.XXX.XXX.XXX:30001/",
                "statusPageUrl": "http://XXX.XXX.XXX.XXX:30001/info",
                "healthCheckUrl": "http://XXX.XXX.XXX.XXX:30001/health",
                "secureHealthCheckUrl": null,
                "vipAddress": "XXXXX-microservice-testprovider",
                "secureVipAddress": "XXXXX-microservice-testprovider",
                "countryId": 1,
                "dataCenterInfo": {
                    "@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
                    "name": "MyOwn"
                },
                "hostName": "XXX.XXX.XXX.XXX",
                "status": "UP",
                "leaseInfo": {
                    "renewalIntervalInSecs": 1,
                    "durationInSecs": 2,
                    "registrationTimestamp": 1521525318562,
                    "lastRenewalTimestamp": 1521525692105,
                    "evictionTimestamp": 0,
                    "serviceUpTimestamp": 1521525318562
                },
                "isCoordinatingDiscoveryServer": false,
                "metadata": {
                    "management.port": "30001",
                    "jmx.port": "54767"
                },
                "lastUpdatedTimestamp": 1521525318562,
                "lastDirtyTimestamp": 1521525318499,
                "actionType": "ADDED",
                "asgName": null,
                "overriddenStatus": "UNKNOWN"
            }
        }
    ],
    "XXXXX-microservice-testconsumer": [
        {
            "host": "XXX.XXX.XXX.XXX",
            "port": 30003,
            "metadata": {
                "management.port": "30003",
                "jmx.port": "55025"
            },
            "uri": "http://XXX.XXX.XXX.XXX:30003",
            "serviceId": "XXXXX-MICROSERVICE-TESTCONSUMER",
            "secure": false,
            "instanceInfo": {
                "instanceId": "XXX.XXX.XXX.XXX:XXXXX-microservice-testconsumer:30003",
                "app": "XXXXX-MICROSERVICE-TESTCONSUMER",
                "appGroupName": null,
                "ipAddr": "XXX.XXX.XXX.XXX",
                "sid": "na",
                "homePageUrl": "http://XXX.XXX.XXX.XXX:30003/",
                "statusPageUrl": "http://XXX.XXX.XXX.XXX:30003/info",
                "healthCheckUrl": "http://XXX.XXX.XXX.XXX:30003/health",
                "secureHealthCheckUrl": null,
                "vipAddress": "XXXXX-microservice-testconsumer",
                "secureVipAddress": "XXXXX-microservice-testconsumer",
                "countryId": 1,
                "dataCenterInfo": {
                    "@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
                    "name": "MyOwn"
                },
                "hostName": "XXX.XXX.XXX.XXX",
                "status": "UP",
                "leaseInfo": {
                    "renewalIntervalInSecs": 1,
                    "durationInSecs": 2,
                    "registrationTimestamp": 1521525777701,
                    "lastRenewalTimestamp": 1521525781698,
                    "evictionTimestamp": 0,
                    "serviceUpTimestamp": 1521525207494
                },
                "isCoordinatingDiscoveryServer": false,
                "metadata": {
                    "management.port": "30003",
                    "jmx.port": "55025"
                },
                "lastUpdatedTimestamp": 1521525777701,
                "lastDirtyTimestamp": 1521525777639,
                "actionType": "ADDED",
                "asgName": null,
                "overriddenStatus": "UNKNOWN"
            }
        },
        {
            "host": "XXX.XXX.XXX.XXX",
            "port": 30002,
            "metadata": {
                "management.port": "30002",
                "jmx.port": "55014"
            },
            "uri": "http://XXX.XXX.XXX.XXX:30002",
            "serviceId": "XXXXX-MICROSERVICE-TESTCONSUMER",
            "secure": false,
            "instanceInfo": {
                "instanceId": "XXX.XXX.XXX.XXX:XXXXX-microservice-testconsumer:30002",
                "app": "XXXXX-MICROSERVICE-TESTCONSUMER",
                "appGroupName": null,
                "ipAddr": "XXX.XXX.XXX.XXX",
                "sid": "na",
                "homePageUrl": "http://XXX.XXX.XXX.XXX:30002/",
                "statusPageUrl": "http://XXX.XXX.XXX.XXX:30002/info",
                "healthCheckUrl": "http://XXX.XXX.XXX.XXX:30002/health",
                "secureHealthCheckUrl": null,
                "vipAddress": "XXXXX-microservice-testconsumer",
                "secureVipAddress": "XXXXX-microservice-testconsumer",
                "countryId": 1,
                "dataCenterInfo": {
                    "@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
                    "name": "MyOwn"
                },
                "hostName": "XXX.XXX.XXX.XXX",
                "status": "UP",
                "leaseInfo": {
                    "renewalIntervalInSecs": 1,
                    "durationInSecs": 2,
                    "registrationTimestamp": 1521525776047,
                    "lastRenewalTimestamp": 1521525782150,
                    "evictionTimestamp": 0,
                    "serviceUpTimestamp": 1521525776047
                },
                "isCoordinatingDiscoveryServer": false,
                "metadata": {
                    "management.port": "30002",
                    "jmx.port": "55014"
                },
                "lastUpdatedTimestamp": 1521525776047,
                "lastDirtyTimestamp": 1521525775985,
                "actionType": "ADDED",
                "asgName": null,
                "overriddenStatus": "UNKNOWN"
            }
        }
    ]
}

  

原文地址:https://www.cnblogs.com/hfultrastrong/p/8608903.html