
com.alibaba.cloud.context.ans.SimpleAnsConfiguration Maven / Gradle / Ivy
/*
* Copyright (C) 2018 the original author or authors.
*
* 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.cloud.context.ans;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.cloud.context.AliCloudServerMode;
import com.alibaba.cloud.context.utils.NetUtils;
import com.alibaba.cloud.context.utils.StringUtils;
/**
* ANS配置简单实现
*
* @author xiaolongzuo
*/
public class SimpleAnsConfiguration implements AnsConfiguration {
private AliCloudServerMode serverMode = AliCloudServerMode.LOCAL;
private String serverList = "127.0.0.1";
private String serverPort = "8080";
private String clientDomains;
private float clientWeight = 1;
private Map clientWeights = new HashMap();
private String clientToken;
private Map clientTokens = new HashMap();
private String clientCluster = "DEFAULT";
private Map clientMetadata = new HashMap<>();
private boolean registerEnabled = true;
private String clientIp;
private String clientInterfaceName;
private int clientPort = -1;
private String env;
private boolean secure = false;
private Map tags = new HashMap<>();
public SimpleAnsConfiguration() {
this.tags.put("ANS_SERVICE_TYPE", "SPRING_CLOUD");
this.clientIp = NetUtils.findFirstNonLoopbackAddress().getHostAddress();
}
public SimpleAnsConfiguration(String serverList, String serverPort) {
this.serverList = serverList;
this.serverPort = serverPort;
}
public void setServerMode(AliCloudServerMode serverMode) {
this.serverMode = serverMode;
}
public void setServerList(String serverList) {
this.serverList = serverList;
}
public void setServerPort(String serverPort) {
this.serverPort = serverPort;
}
public void setClientDomains(String clientDomains) {
this.clientDomains = clientDomains;
}
public void setClientWeight(float clientWeight) {
this.clientWeight = clientWeight;
}
public void setClientWeights(Map clientWeights) {
this.clientWeights = clientWeights;
}
public void setClientToken(String clientToken) {
this.clientToken = clientToken;
}
public void setClientTokens(Map clientTokens) {
this.clientTokens = clientTokens;
}
public void setClientCluster(String clientCluster) {
this.clientCluster = clientCluster;
}
public void setClientMetadata(Map clientMetadata) {
this.clientMetadata = clientMetadata;
}
public void setRegisterEnabled(boolean registerEnabled) {
this.registerEnabled = registerEnabled;
}
public void setClientIp(String clientIp) {
this.clientIp = clientIp;
}
public void setClientInterfaceName(String clientInterfaceName) {
this.clientInterfaceName = clientInterfaceName;
NetworkInterface networkInterface;
try {
networkInterface = NetworkInterface.getByName(clientInterfaceName);
} catch (SocketException e) {
throw new RuntimeException("get network interface " + clientInterfaceName + "failed.", e);
}
if (null == networkInterface) {
throw new RuntimeException("no such network interface " + clientInterfaceName);
}
Enumeration inetAddress = networkInterface.getInetAddresses();
while (inetAddress.hasMoreElements()) {
InetAddress currentAddress = inetAddress.nextElement();
if (currentAddress instanceof Inet4Address && !currentAddress.isLoopbackAddress()) {
clientIp = currentAddress.getHostAddress();
break;
}
}
if (StringUtils.isEmpty(clientIp)) {
throw new RuntimeException("cannot find available ip from network interface " + clientInterfaceName);
}
}
public void setClientPort(int clientPort) {
this.clientPort = clientPort;
}
public void setEnv(String env) {
this.env = env;
}
public void setSecure(boolean secure) {
this.secure = secure;
}
public void setTags(Map tags) {
this.tags = tags;
}
@Override
public AliCloudServerMode getServerMode() {
return serverMode;
}
@Override
public String getServerList() {
return serverList;
}
@Override
public String getServerPort() {
return serverPort;
}
@Override
public String getClientDomains() {
return clientDomains;
}
@Override
public float getClientWeight() {
return clientWeight;
}
@Override
public Map getClientWeights() {
return clientWeights;
}
@Override
public String getClientToken() {
return clientToken;
}
@Override
public Map getClientTokens() {
return clientTokens;
}
@Override
public String getClientCluster() {
return clientCluster;
}
@Override
public Map getClientMetadata() {
return clientMetadata;
}
@Override
public boolean isRegisterEnabled() {
return registerEnabled;
}
@Override
public String getClientIp() {
return clientIp;
}
@Override
public String getClientInterfaceName() {
return clientInterfaceName;
}
@Override
public int getClientPort() {
return clientPort;
}
@Override
public String getEnv() {
return env;
}
@Override
public boolean isSecure() {
return secure;
}
@Override
public Map getTags() {
return tags;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy