@Service public class ConnectionManager extends Subscriber<ConnectionLimitRuleChangeEvent>
| 限定符和类型 | 类和说明 |
|---|---|
(专用程序包) static class |
ConnectionManager.ConnectionLimitRule |
| 限定符和类型 | 字段和说明 |
|---|---|
private ClientConnectionEventListenerRegistry |
clientConnectionEventListenerRegistry |
private java.util.Map<java.lang.String,java.util.concurrent.atomic.AtomicInteger> |
connectionForClientIp |
private ConnectionManager.ConnectionLimitRule |
connectionLimitRule
connection limit rule.
|
(专用程序包) java.util.Map<java.lang.String,Connection> |
connections |
private static long |
KEEP_ALIVE_TIME
4 times of client keep alive.
|
private int |
loadClient
current loader adjust count,only effective once,use to re balance.
|
(专用程序包) java.lang.String |
redirectAddress |
static java.lang.String |
RULE_FILE_NAME |
| 构造器和说明 |
|---|
ConnectionManager() |
| 限定符和类型 | 方法和说明 |
|---|---|
private com.alibaba.nacos.api.remote.request.RequestMeta |
buildMeta() |
private boolean |
checkLimit(Connection connection) |
boolean |
checkValid(java.lang.String connectionId)
check connection id is valid.
|
java.util.Map<java.lang.String,Connection> |
currentClients() |
int |
currentClientsCount()
get all client count.
|
int |
currentClientsCount(java.util.Map<java.lang.String,java.lang.String> filterLabels)
get client count with labels filter.
|
int |
currentSdkClientCount()
get client count from sdk.
|
Connection |
getConnection(java.lang.String connectionId)
get by connection id.
|
java.util.List<Connection> |
getConnectionByIp(java.lang.String clientIp)
get by client ip.
|
ConnectionManager.ConnectionLimitRule |
getConnectionLimitRule() |
int |
getCurrentConnectionCount()
get current connections count.
|
private java.io.File |
getRuleFile() |
protected void |
initLimitRue() |
private boolean |
isOverLimit()
check if over limit.
|
void |
loadCount(int loadClient,
java.lang.String redirectAddress) |
private void |
loadRuleFromLocal() |
void |
loadSingle(java.lang.String connectionId,
java.lang.String redirectAddress)
send load request to spefic connetionId.
|
void |
onEvent(ConnectionLimitRuleChangeEvent event) |
void |
refreshActiveTime(java.lang.String connectionId)
regresh connection active time.
|
boolean |
register(java.lang.String connectionId,
Connection connection)
register a new connect.
|
private void |
registerFileWatch() |
private void |
saveRuleToLocal(ConnectionManager.ConnectionLimitRule limitRule) |
void |
start()
Start Task:Expel the connection which active Time expire.
|
java.lang.Class<? extends Event> |
subscribeType() |
boolean |
traced(java.lang.String clientIp)
if monitor detail.
|
void |
unregister(java.lang.String connectionId)
unregister a connection .
|
executor, ignoreExpireEvent, scopeMatchespublic static final java.lang.String RULE_FILE_NAME
private static final long KEEP_ALIVE_TIME
private ConnectionManager.ConnectionLimitRule connectionLimitRule
private int loadClient
java.lang.String redirectAddress
private java.util.Map<java.lang.String,java.util.concurrent.atomic.AtomicInteger> connectionForClientIp
java.util.Map<java.lang.String,Connection> connections
@Autowired private ClientConnectionEventListenerRegistry clientConnectionEventListenerRegistry
public boolean traced(java.lang.String clientIp)
clientIp - clientIp.@PostConstruct protected void initLimitRue()
public boolean checkValid(java.lang.String connectionId)
connectionId - connectionId to be check.public boolean register(java.lang.String connectionId,
Connection connection)
connectionId - connectionIdconnection - connectionprivate boolean checkLimit(Connection connection)
public void unregister(java.lang.String connectionId)
connectionId - connectionId.public Connection getConnection(java.lang.String connectionId)
connectionId - connection id.public java.util.List<Connection> getConnectionByIp(java.lang.String clientIp)
clientIp - client ip.public int getCurrentConnectionCount()
public void refreshActiveTime(java.lang.String connectionId)
connectionId - connectionId.@PostConstruct public void start()
private com.alibaba.nacos.api.remote.request.RequestMeta buildMeta()
public void loadCount(int loadClient,
java.lang.String redirectAddress)
public void loadSingle(java.lang.String connectionId,
java.lang.String redirectAddress)
connectionId - connection id of client.redirectAddress - server address to redirect.public int currentClientsCount()
public int currentClientsCount(java.util.Map<java.lang.String,java.lang.String> filterLabels)
filterLabels - label to filter client count.public int currentSdkClientCount()
public java.util.Map<java.lang.String,Connection> currentClients()
private boolean isOverLimit()
public void onEvent(ConnectionLimitRuleChangeEvent event)
onEvent 在类中 Subscriber<ConnectionLimitRuleChangeEvent>public java.lang.Class<? extends Event> subscribeType()
public ConnectionManager.ConnectionLimitRule getConnectionLimitRule()
private void loadRuleFromLocal()
throws java.lang.Exception
java.lang.Exceptionprivate void saveRuleToLocal(ConnectionManager.ConnectionLimitRule limitRule) throws java.io.IOException
java.io.IOExceptionprivate java.io.File getRuleFile()
private void registerFileWatch()
Copyright © 2018–2022 Alibaba Group. All rights reserved.