java语言中Nacos注册中心:Client端【获取所有服务请求】
前言
java语言中Nacos注册中心:Client端【获取所有服务请求】
0. 环境
- nacos版本:1.4.1
- Spring Cloud : 2020.0.2
- Spring Boot :2.4.4
- Spring Cloud alibaba: 2.2.5.RELEASE
1. 获取所有服务
入口方法:org.springframework.cloud.client.discovery.health.DiscoveryClientHealthIndicator#health
:
@Override
public Health health() {
Health.Builder builder = new Health.Builder();
if (this.discoveryInitialized.get()) {
try {
DiscoveryClient client = this.discoveryClient.getIfAvailable();
String description = (this.properties.isIncludeDescription()) ? client.description() : "";
if (properties.isUseServicesQuery()) {
// todo
List<String> services = client.getServices();
builder.status(new Status("UP", description)).withDetail("services", services);
}
else {
client.probe();
builder.status(new Status("UP", description));
}
}
catch (Exception e) {
this.log.error("Error", e);
builder.down(e);
}
}
else {
builder.status(new Status(Status.UNKNOWN.getCode(), "Discovery Client not initialized"));
}
return builder.build();
}
com.alibaba.cloud.nacos.discovery.NacosServiceDiscovery#getServices:
public List<String> getServices() throws NacosException {
String group = discoveryProperties.getGroup();
ListView<String> services = namingService().getServicesOfServer(1,
Integer.MAX_VALUE, group);
return services.getData();
}
com.alibaba.nacos.client.naming.net.NamingProxy#getServiceList(int, int, java.lang.String, com.alibaba.nacos.api.selector.AbstractSelector)
public ListView<String> getServiceList(int pageNo, int pageSize, String groupName, AbstractSelector selector)
throws NacosException {
Map<String, String> params = new HashMap<String, String>(4);
params.put("pageNo", String.valueOf(pageNo));
params.put("pageSize", String.valueOf(pageSize));
params.put(CommonParams.NAMESPACE_ID, namespaceId);
params.put(CommonParams.GROUP_NAME, groupName);
if (selector != null) {
switch (SelectorType.valueOf(selector.getType())) {
case none:
break;
case label:
ExpressionSelector expressionSelector = (ExpressionSelector) selector;
params.put("selector", JacksonUtils.toJson(expressionSelector));
break;
default:
break;
}
}
// todo GET请求
String result = reqApi(UtilAndComs.nacosUrlBase "/service/list", params, HttpMethod.GET);
JsonNode json = JacksonUtils.toObj(result);
ListView<String> listView = new ListView<String>();
listView.setCount(json.get("count").asInt());
listView.setData(JacksonUtils.toObj(json.get("doms").toString(), new TypeReference<List<String>>() {
}));
return listView;
}
获取所有服务:GET请求 url:/nacos/v1/ns/service/list
2. 方法调用图
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanehic
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01