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"
}
}
]
}

浙公网安备 33010602011771号