/*
* Copyright 1999-2018 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.nacos.client.config.impl;
import com.alibaba.nacos.api.PropertyKeyConst;
import com.alibaba.nacos.api.common.Constants;
import com.alibaba.nacos.api.config.ConfigType;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.config.remote.request.ClientConfigMetricRequest;
import com.alibaba.nacos.api.config.remote.request.ConfigBatchListenRequest;
import com.alibaba.nacos.api.config.remote.request.ConfigChangeNotifyRequest;
import com.alibaba.nacos.api.config.remote.request.ConfigPublishRequest;
import com.alibaba.nacos.api.config.remote.request.ConfigQueryRequest;
import com.alibaba.nacos.api.config.remote.request.ConfigRemoveRequest;
import com.alibaba.nacos.api.config.remote.response.ClientConfigMetricResponse;
import com.alibaba.nacos.api.config.remote.response.ConfigChangeBatchListenResponse;
import com.alibaba.nacos.api.config.remote.response.ConfigChangeNotifyResponse;
import com.alibaba.nacos.api.config.remote.response.ConfigPublishResponse;
import com.alibaba.nacos.api.config.remote.response.ConfigQueryResponse;
import com.alibaba.nacos.api.config.remote.response.ConfigRemoveResponse;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.remote.RemoteConstants;
import com.alibaba.nacos.api.remote.request.Request;
import com.alibaba.nacos.api.remote.response.Response;
import com.alibaba.nacos.client.config.common.GroupKey;
import com.alibaba.nacos.client.config.filter.impl.ConfigFilterChainManager;
import com.alibaba.nacos.client.config.filter.impl.ConfigResponse;
import com.alibaba.nacos.client.config.utils.ContentUtils;
import com.alibaba.nacos.client.env.NacosClientProperties;
import com.alibaba.nacos.client.monitor.MetricsMonitor;
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
import com.alibaba.nacos.client.utils.AppNameUtils;
import com.alibaba.nacos.client.utils.EnvUtil;
import com.alibaba.nacos.client.utils.LogUtils;
import com.alibaba.nacos.client.utils.ParamUtil;
import com.alibaba.nacos.client.utils.TenantUtil;
import com.alibaba.nacos.common.lifecycle.Closeable;
import com.alibaba.nacos.common.notify.Event;
import com.alibaba.nacos.common.notify.NotifyCenter;
import com.alibaba.nacos.common.notify.listener.Subscriber;
import com.alibaba.nacos.common.remote.ConnectionType;
import com.alibaba.nacos.common.remote.client.Connection;
import com.alibaba.nacos.common.remote.client.ConnectionEventListener;
import com.alibaba.nacos.common.remote.client.RpcClient;
import com.alibaba.nacos.common.remote.client.RpcClientFactory;
import com.alibaba.nacos.common.remote.client.RpcClientTlsConfig;
import com.alibaba.nacos.common.remote.client.ServerListFactory;
import com.alibaba.nacos.common.utils.ConvertUtils;
import com.alibaba.nacos.common.utils.JacksonUtils;
import com.alibaba.nacos.common.utils.MD5Utils;
import com.alibaba.nacos.common.utils.StringUtils;
import com.alibaba.nacos.common.utils.ThreadUtils;
import com.alibaba.nacos.common.utils.VersionUtils;
import com.alibaba.nacos.plugin.auth.api.RequestResource;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.slf4j.Logger;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import static com.alibaba.nacos.api.common.Constants.ENCODE;
/**
* Long polling.
*
* @author Nacos
*/
public class ClientWorker implements Closeable {
private static final Logger LOGGER = LogUtils.logger(ClientWorker.class);
private static final String NOTIFY_HEADER = "notify";
private static final String TAG_PARAM = "tag";
private static final String APP_NAME_PARAM = "appName";
private static final String BETAIPS_PARAM = "betaIps";
private static final String TYPE_PARAM = "type";
private static final String ENCRYPTED_DATA_KEY_PARAM = "encryptedDataKey";
/**
* groupKey -> cacheData.
*/
private final AtomicReference<Map<String, CacheData>> cacheMap = new AtomicReference<>(new HashMap<>());
private final ConfigFilterChainManager configFilterChainManager;
private final String uuid = UUID.randomUUID().toString();
private long timeout;
private final ConfigRpcTransportClient agent;
private int taskPenaltyTime;
private boolean enableRemoteSyncConfig = false;
private static final int MIN_THREAD_NUM = 2;
private static final int THREAD_MULTIPLE = 1;
/**
* index(taskId)-> total cache count for this taskId.
*/
private final List<AtomicInteger> taskIdCacheCountList = new ArrayList<>();
/**
* Add listeners for data.
*
* @param dataId dataId of data
* @param group group of data
* @param listeners listeners
*/
public void addListeners(String dataId, String group, List<? extends Listener> listeners) throws NacosException {
group = blank2defaultGroup(group);
CacheData cache = addCacheDataIfAbsent(dataId, group);
synchronized (cache) {
for (Listener listener : listeners) {
cache.addListener(listener);
}
cache.setDiscard(false);
cache.setConsistentWithServer(false);
agent.notifyListenConfig();
}
}
/**
* Add listeners for tenant.
*
* @param dataId dataId of data
* @param group group of data
* @param listeners listeners
* @throws NacosException nacos exception
*/
public void addTenantListeners(String dataId, String group, List<? extends Listener> listeners)
throws NacosException {
group = blank2defaultGroup(group);
String tenant = agent.getTenant();
CacheData cache = addCacheDataIfAbsent(dataId, group, tenant);
synchronized (cache) {
for (Listener listener : listeners) {
cache.addListener(listener);
}
cache.setDiscard(false);
cache.setConsistentWithServer(false);
agent.notifyListenConfig();
}
}
/**
* Add listeners for tenant with content.
*
* @param dataId dataId of data
* @param group group of data
* @param content content
* @param encryptedDataKey encryptedDataKey
* @param listeners listeners
* @throws NacosException nacos exception
*/
public void addTenantListenersWithContent(String dataId, String group, String content, String encryptedDataKey,
List<? extends Listener> listeners) throws
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Nacos 致力于帮助您发现、配置和管理微服务 (2000个子文件)
ClientWorker.java 54KB
RpcClientTest.java 45KB
RpcClient.java 40KB
PathMatchingResourcePatternResolver.java 39KB
AntPathMatcher.java 37KB
NacosNamingServiceTest.java 35KB
AbstractObjectUtils.java 33KB
DistributedDatabaseOperateImpl.java 30KB
AbstractAssert.java 30KB
StringUtils.java 30KB
ClassReader.java 30KB
JacksonUtilsTest.java 29KB
NamingGrpcClientProxyTest.java 27KB
ServerMemberManager.java 27KB
Metadata.java 27KB
GrpcClient.java 25KB
MultiTenant_ITCase.java 24KB
Base64.java 24KB
JRaftServer.java 24KB
NamingClientProxyDelegateTest.java 23KB
NamingGrpcClientProxy.java 23KB
ConfigInfoMapper.java 23KB
PersistentClientOperationServiceImpl.java 22KB
Payload.java 22KB
CacheData.java 22KB
InstanceControllerV2.java 22KB
DistroClientTransportAgentTest.java 22KB
InstanceController.java 22KB
NamingService.java 22KB
MultiTenant_InstanceAPI_ITCase.java 22KB
NamingHttpClientProxyTest.java 21KB
NacosRestTemplate.java 21KB
DiskUtils.java 21KB
StringUtilsTest.java 21KB
NacosNamingService.java 21KB
ServerListManager.java 21KB
NamingHttpClientProxy.java 20KB
GrpcClientTest.java 19KB
CPInstancesAPI_ITCase.java 19KB
ConvertUtilsTest.java 18KB
NacosRestTemplateTest.java 18KB
InstanceOperatorClientImpl.java 18KB
ConfigInfoMapperByDerbyTest.java 18KB
ConfigInfoMapperByMySqlTest.java 17KB
ServerLoaderController.java 17KB
NacosAsyncRestTemplate.java 17KB
ClassUtils.java 16KB
DefaultParamChecker.java 16KB
SwitchManager.java 15KB
DefaultGrpcClientConfig.java 15KB
GrpcRequestAcceptorTest.java 15KB
ResourceUtils.java 15KB
TcpHealthCheckProcessor.java 15KB
HttpClient.java 14KB
StandaloneDatabaseOperateImplTest.java 14KB
CollectionUtilsTest.java 14KB
NotifyCenter.java 14KB
SwitchDomain.java 14KB
AbstractInstanceOperate_ITCase.java 14KB
ServiceController.java 14KB
ServerMemberManagerTest.java 13KB
JRaftServerTest.java 13KB
DistroClientDataProcessor.java 13KB
ConnectionManager.java 13KB
SelectInstances_ITCase.java 13KB
MemberUtilTest.java 13KB
HttpUtilsTest.java 13KB
ConfigInfoMapperByDerby.java 13KB
UserController.java 13KB
CollectionUtils.java 13KB
NamingGrpcRedoServiceTest.java 13KB
FileSystemResource.java 13KB
DefaultRequestFutureTest.java 13KB
DefaultParamCheckerTest.java 12KB
ServerHttpAgent.java 12KB
ConfigInfoMapperByMySql.java 12KB
DistroClientTransportAgent.java 12KB
NotifyCenterTest.java 12KB
NacosStateMachine.java 12KB
ClientInfoControllerV2.java 12KB
ServiceUtil.java 12KB
NamingGrpcRedoService.java 12KB
DistroClientDataProcessorTest.java 12KB
DefaultGrpcClientConfigTest.java 12KB
NacosRoleServiceImpl.java 12KB
NacosCombinedTraceSubscriberTest.java 12KB
CatalogServiceV2Impl.java 12KB
NacosNamingMaintainServiceTest.java 12KB
NacosClientPropertiesTest.java 12KB
ServiceOperatorV2Impl.java 12KB
AbstractFileResolvingResource.java 11KB
InstanceControllerV2Test.java 11KB
MetricsMonitor.java 11KB
BaseDatabaseOperate.java 11KB
NacosConfigServiceTest.java 11KB
Subscribe_ITCase.java 11KB
NacosConfigService.java 11KB
ExternalDataSourceServiceImpl.java 11KB
InitUtilsTest.java 11KB
MemberUtil.java 11KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6727
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip
- 一个基于python的web后端高性能开发框架,下载可用
- python-leetcode面试题解之第179题最大数-题解.zip
- python-leetcode面试题解之第170题两数之和III数据结构设计-题解.zip
- python-leetcode面试题解之第168题Excel表列名称-题解.zip
- python-leetcode面试题解之第167题两数之和II输入有序数组-题解.zip
- python-leetcode面试题解之第166题分数到小数-题解.zip
- python-leetcode面试题解之第165比较版本号-题解.zip
- python-leetcode面试题解之第163题缺失的区间-题解.zip
- python-leetcode面试题解之第162题寻找峰值-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功