一个服务想访问另一个服务时,如何确定它的地址呢?这时,就需要服务发现(Service Discovery)
假如使用的是eureka当做服务发现注册中心
一、第一种方法:
http://localhost:7001/eureka/apps
返回XML信息
第二种方法
1、先在Application里开启 @EnableDiscoveryClient
2、代码示例:
@Slf4j
@RestController
public class testController {
@Resource
private DiscoveryClient discoveryClient;
/**
* 获取注册在Eureka中的服务名称
*
* @return
*/
@GetMapping("/getEurekaServices")
public List<String> getEurekaServices() {
List<String> services = new ArrayList<>();
List<String> serviceNames = discoveryClient.getServices();
for (String serviceName : serviceNames) {
List<ServiceInstance> serviceInstances = discoveryClient.getInstances(serviceName);
for (ServiceInstance serviceInstance : serviceInstances) {
services.add(String.format("%s:%s ", serviceName, serviceInstance.getUri()));
}
}
return services;
}
}
3、结果
[
"eureka-server:http://eureka7001.com:7001",
"gateway-register-server:http://192.168.20.1:80",
"gateway-work-server:http://192.168.20.1:8081"
]