blob: 4e5b3a825ddfa57422c095d37b91a9cc063ab5cc [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.servicecomb.serviceregistry.config;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import org.apache.servicecomb.foundation.auth.AuthHeaderProvider;
import org.apache.servicecomb.foundation.common.net.IpPort;
import org.apache.servicecomb.serviceregistry.ServiceRegistry;
import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient;
import org.apache.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl;
import io.vertx.core.http.HttpVersion;
public class ServiceRegistryConfig {
public static final ServiceRegistryConfig INSTANCE = buildFromConfiguration();
public static final int DEFAULT_TIMEOUT_IN_SECONDS = 30;
public static final int DEFAULT_REQUEST_TIMEOUT_IN_MS = 30000;
public static final int DEFAULT_REQUEST_HEARTBEAT_TIMEOUT_IN_MS = 3000;
public static final int DEFAULT_CHECK_INTERVAL_IN_S = 30;
public static final int DEFAULT_CHECK_TIMES = 3;
public static final String AUTH_ENABLED = "servicecomb.auth.enabled";
public static final String TENANT_ACCESS_KEY = "servicecomb.auth.accessKey";
public static final String TENANT_SECRET_KEY = "servicecomb.auth.secretKey";
public static final String REGISTRY_API_VERSION = "servicecomb.service.registry.api.version";
public static final String TENANT_NAME = "servicecomb.config.client.tenantName";
public static final String DOMAIN_NAME = "servicecomb.config.client.domainName";
public static final String NO_TENANT = "default";
public static final String NO_DOMAIN = "default";
public static final String VERTICLE_INSTANCES = "servicecomb.service.registry.client.instances";
public static final String EVENT_LOOP_POOL_SIZE = "servicecomb.service.registry.client.eventLoopPoolSize";
public static final String WORKER_POOL_SIZE = "servicecomb.service.registry.client.workerPoolSize";
private String registryName = ServiceRegistry.DEFAULT_REGISTRY_NAME;
private HttpVersion httpVersion;
private int instances;
private boolean ssl = true;
private String clientName;
private String watchClientName;
private ArrayList<IpPort> ipPort;
private int connectionTimeout;
private int idleConnectionTimeout;
private int idleWatchConnectionTimeout;
private int requestTimeout;
//Set the timeout of the heartbeat request
private int heartBeatRequestTimeout;
private int heartbeatInterval;
private int instancePullInterval;
private boolean registryAutoDiscovery;
private boolean registryAutoRefresh;
private int resendHeartBeatTimes;
private boolean alwaysOverrideSchema;
private boolean ignoreSwaggerDifference;
private boolean preferIpAddress;
private boolean watch;
private String registryApiVersion;
private String tenantName;
private String domainName;
private String accessKey;
private String secretKey;
private boolean proxyEnable;
private String proxyHost;
private int proxyPort;
private String proxyUsername;
private String proxyPasswd;
private List<AuthHeaderProvider> authHeaderProviders;
private Function<ServiceRegistry, ServiceRegistryClient> serviceRegistryClientConstructor =
serviceRegistry -> new ServiceRegistryClientImpl(this);
public ServiceRegistryConfig() {
}
/**
* Read the service registry related configurations and build the {@link ServiceRegistryConfig}
* object. Since most of the service registry configurations are similar, this method may be
* convenient to construct multiple config objects.
*/
public static ServiceRegistryConfig buildFromConfiguration() {
return new ServiceRegistryConfigBuilder().build();
}
public String getTransport() {
return "rest";
}
public String getRegistryName() {
return registryName;
}
public ServiceRegistryConfig setRegistryName(String registryName) {
this.registryName = registryName;
return this;
}
public HttpVersion getHttpVersion() {
return httpVersion;
}
public ServiceRegistryConfig setHttpVersion(HttpVersion httpVersion) {
this.httpVersion = httpVersion;
return this;
}
public int getInstances() {
return instances;
}
public ServiceRegistryConfig setInstances(int instances) {
this.instances = instances;
return this;
}
public boolean isSsl() {
return ssl;
}
public ServiceRegistryConfig setSsl(boolean ssl) {
this.ssl = ssl;
return this;
}
public String getClientName() {
return this.clientName;
}
public ServiceRegistryConfig setClientName(String clientName) {
this.clientName = clientName;
return this;
}
public String getWatchClientName() {
return this.watchClientName;
}
public ServiceRegistryConfig setWatchClientName(String watchClientName) {
this.watchClientName = watchClientName;
return this;
}
public ArrayList<IpPort> getIpPort() {
return ipPort;
}
public ServiceRegistryConfig setIpPort(ArrayList<IpPort> ipPort) {
this.ipPort = ipPort;
return this;
}
public int getConnectionTimeout() {
return connectionTimeout;
}
public ServiceRegistryConfig setConnectionTimeout(int connectionTimeout) {
this.connectionTimeout = connectionTimeout;
return this;
}
public int getIdleConnectionTimeout() {
return idleConnectionTimeout;
}
public ServiceRegistryConfig setIdleConnectionTimeout(int idleConnectionTimeout) {
this.idleConnectionTimeout = idleConnectionTimeout;
return this;
}
public int getIdleWatchConnectionTimeout() {
return idleWatchConnectionTimeout;
}
public ServiceRegistryConfig setIdleWatchConnectionTimeout(int idleWatchConnectionTimeout) {
this.idleWatchConnectionTimeout = idleWatchConnectionTimeout;
return this;
}
public int getRequestTimeout() {
return requestTimeout;
}
public ServiceRegistryConfig setRequestTimeout(int requestTimeout) {
this.requestTimeout = requestTimeout;
return this;
}
public int getHeartBeatRequestTimeout() {
return heartBeatRequestTimeout;
}
public ServiceRegistryConfig setHeartBeatRequestTimeout(int heartBeatRequestTimeout) {
this.heartBeatRequestTimeout = heartBeatRequestTimeout;
return this;
}
public int getHeartbeatInterval() {
return heartbeatInterval;
}
public ServiceRegistryConfig setHeartbeatInterval(int heartbeatInterval) {
this.heartbeatInterval = heartbeatInterval;
return this;
}
public int getInstancePullInterval() {
return instancePullInterval;
}
public ServiceRegistryConfig setInstancePullInterval(int instancePullInterval) {
this.instancePullInterval = instancePullInterval;
return this;
}
public boolean isRegistryAutoDiscovery() {
return registryAutoDiscovery;
}
public ServiceRegistryConfig setRegistryAutoDiscovery(boolean registryAutoDiscovery) {
this.registryAutoDiscovery = registryAutoDiscovery;
return this;
}
public boolean isRegistryAutoRefresh() {
return registryAutoRefresh;
}
public ServiceRegistryConfig setRegistryAutoRefresh(boolean registryAutoRefresh) {
this.registryAutoRefresh = registryAutoRefresh;
return this;
}
public int getResendHeartBeatTimes() {
return resendHeartBeatTimes;
}
public ServiceRegistryConfig setResendHeartBeatTimes(int resendHeartBeatTimes) {
this.resendHeartBeatTimes = resendHeartBeatTimes;
return this;
}
public boolean isAlwaysOverrideSchema() {
return alwaysOverrideSchema;
}
public ServiceRegistryConfig setAlwaysOverrideSchema(boolean alwaysOverrideSchema) {
this.alwaysOverrideSchema = alwaysOverrideSchema;
return this;
}
public boolean isIgnoreSwaggerDifference() {
return ignoreSwaggerDifference;
}
public ServiceRegistryConfig setIgnoreSwaggerDifference(boolean ignoreSwaggerDifference) {
this.ignoreSwaggerDifference = ignoreSwaggerDifference;
return this;
}
public boolean isPreferIpAddress() {
return preferIpAddress;
}
public ServiceRegistryConfig setPreferIpAddress(boolean preferIpAddress) {
this.preferIpAddress = preferIpAddress;
return this;
}
public boolean isWatch() {
return watch;
}
public ServiceRegistryConfig setWatch(boolean watch) {
this.watch = watch;
return this;
}
public String getRegistryApiVersion() {
return registryApiVersion;
}
public ServiceRegistryConfig setRegistryApiVersion(String registryApiVersion) {
this.registryApiVersion = registryApiVersion;
return this;
}
public String getTenantName() {
return tenantName;
}
public ServiceRegistryConfig setTenantName(String tenantName) {
this.tenantName = tenantName;
return this;
}
public String getDomainName() {
return domainName;
}
public ServiceRegistryConfig setDomainName(String domainName) {
this.domainName = domainName;
return this;
}
public String getAccessKey() {
return accessKey;
}
public ServiceRegistryConfig setAccessKey(String accessKey) {
this.accessKey = accessKey;
return this;
}
public String getSecretKey() {
return secretKey;
}
public ServiceRegistryConfig setSecretKey(String secretKey) {
this.secretKey = secretKey;
return this;
}
public Boolean isProxyEnable() {
return proxyEnable;
}
public ServiceRegistryConfig setProxyEnable(Boolean proxyEnable) {
this.proxyEnable = proxyEnable;
return this;
}
public String getProxyHost() {
return proxyHost;
}
public ServiceRegistryConfig setProxyHost(String proxyHost) {
this.proxyHost = proxyHost;
return this;
}
public int getProxyPort() {
return proxyPort;
}
public ServiceRegistryConfig setProxyPort(int proxyPort) {
this.proxyPort = proxyPort;
return this;
}
public String getProxyUsername() {
return proxyUsername;
}
public ServiceRegistryConfig setProxyUsername(String proxyUsername) {
this.proxyUsername = proxyUsername;
return this;
}
public String getProxyPasswd() {
return proxyPasswd;
}
public ServiceRegistryConfig setProxyPasswd(String proxyPasswd) {
this.proxyPasswd = proxyPasswd;
return this;
}
public List<AuthHeaderProvider> getAuthHeaderProviders() {
return authHeaderProviders;
}
public ServiceRegistryConfig setAuthHeaderProviders(
List<AuthHeaderProvider> authHeaderProviders) {
this.authHeaderProviders = authHeaderProviders;
return this;
}
public ServiceRegistryConfig setServiceRegistryClientConstructor(
Function<ServiceRegistry, ServiceRegistryClient> serviceRegistryClientConstructor) {
this.serviceRegistryClientConstructor = serviceRegistryClientConstructor;
return this;
}
public ServiceRegistryClient createServiceRegistryClient(ServiceRegistry serviceRegistry) {
return this.serviceRegistryClientConstructor.apply(serviceRegistry);
}
}