nacos-spring-boot-project
nacos-spring-boot-project copied to clipboard
java sdk nacos-discovery-spring-boot-starter 使用过程中的疑问
你好: 在使用nacos sdk java版中有2个疑问点, 我使用的版本如下:0.2.10
我的配置中 #设置成临时实例 nacos.discovery.register.ephemeral=true 注册过程中有2个疑问 疑问一: 这个地方: NamingClientProxyDelegate类中注册实例如下: @Override public void registerService(String serviceName, String groupName, Instance instance) throws NacosException { getExecuteClientProxy(instance).registerService(serviceName, groupName, instance); }
private NamingClientProxy getExecuteClientProxy(Instance instance) { return instance.isEphemeral() ? grpcClientProxy : httpClientProxy; }
和NamingHttpClientProxy.registerService.java中的代码会不会存在重复问题 @Override public void registerService(String serviceName, String groupName, Instance instance) throws NacosException {
NAMING_LOGGER.info("[REGISTER-SERVICE] {} registering service {} with instance: {}", namespaceId, serviceName,
instance);
String groupedServiceName = NamingUtils.getGroupedName(serviceName, groupName);
if (instance.isEphemeral()) {
BeatInfo beatInfo = beatReactor.buildBeatInfo(groupedServiceName, instance);
beatReactor.addBeatInfo(groupedServiceName, beatInfo);
}
final Map<String, String> params = new HashMap<String, String>(16);
params.put(CommonParams.NAMESPACE_ID, namespaceId);
params.put(CommonParams.SERVICE_NAME, groupedServiceName);
params.put(CommonParams.GROUP_NAME, groupName);
params.put(CommonParams.CLUSTER_NAME, instance.getClusterName());
params.put(IP_PARAM, instance.getIp());
params.put(PORT_PARAM, String.valueOf(instance.getPort()));
params.put(WEIGHT_PARAM, String.valueOf(instance.getWeight()));
params.put("enable", String.valueOf(instance.isEnabled()));
params.put(HEALTHY_PARAM, String.valueOf(instance.isHealthy()));
params.put(EPHEMERAL_PARAM, String.valueOf(instance.isEphemeral()));
params.put(META_PARAM, JacksonUtils.toJson(instance.getMetadata()));
reqApi(UtilAndComs.nacosUrlInstance, params, HttpMethod.POST);
}
如果说:instance.isEphemeral() 为true的话 根本就不会走NamingHttpClientProxy代理了。
疑问二: 在NamingGrpcClientProxy.registerService方法中我看没有设置instanceId。 这样就会导致调用/nacos/v1/ns/instance获取到的instanceId会是空的。
是设计如此 还是有点小问题。 麻烦大佬们解答下。