All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.eureka2.server.config.EurekaServerConfig Maven / Gradle / Ivy

/*
 * Copyright 2014 Netflix, Inc.
 *
 * 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.netflix.eureka2.server.config;

import com.netflix.eureka2.registry.datacenter.LocalDataCenterInfo.DataCenterType;
import com.netflix.eureka2.server.registry.eviction.EvictionStrategyProvider.StrategyType;
import com.netflix.eureka2.transport.EurekaTransports;
import com.netflix.eureka2.transport.EurekaTransports.Codec;
import com.netflix.governator.annotations.Configuration;

/**
 * This class contains essential configuration data that are required during Eureka read/write server
 * bootstrapping. Multiple sources of this data are supported, like command line arguments,
 * property configuration file and archaius.
 *
 * @author Tomasz Bak
 */
public abstract class EurekaServerConfig extends EurekaBootstrapConfig {

    public static final long DEFAULT_EVICTION_TIMEOUT = 30000;

    @Configuration("services.registration.port")
    private int registrationPort = EurekaTransports.DEFAULT_REGISTRATION_PORT;

    @Configuration("services.replication.port")
    private int replicationPort = EurekaTransports.DEFAULT_REPLICATION_PORT;

    @Configuration("services.discovery.port")
    private int discoveryPort = EurekaTransports.DEFAULT_DISCOVERY_PORT;

    @Configuration("registry.evictionTimeout")
    private long evictionTimeout = DEFAULT_EVICTION_TIMEOUT;

    @Configuration("registry.evictionStrategy.type")
    private String evictionStrategyType = StrategyType.PercentageDrop.name();

    @Configuration("registry.evictionStrategy.value")
    private String evictionStrategyValue = "20";

    // For property injection
    protected EurekaServerConfig() {
    }

    protected EurekaServerConfig(DataCenterType dataCenterType, String resolverType,
                                 int registrationPort, int replicationPort, int discoveryPort, Codec codec, int shutDownPort,
                                 String appName, String vipAddress, String writeClusterDomainName,
                                 String[] writeClusterServers, int webAdminPort,
                                 long evictionTimeout, String evictionStrategyType, String evictionStrategyValue) {
        super(dataCenterType, resolverType, codec, shutDownPort, appName, vipAddress, writeClusterDomainName, writeClusterServers, webAdminPort);
        this.registrationPort = registrationPort;
        this.replicationPort = replicationPort;
        this.discoveryPort = discoveryPort;
        this.evictionTimeout = evictionTimeout;
        this.evictionStrategyType = evictionStrategyType;
        this.evictionStrategyValue = evictionStrategyValue;
    }

    public int getRegistrationPort() {
        return registrationPort;
    }

    public int getReplicationPort() {
        return replicationPort;
    }

    public int getDiscoveryPort() {
        return discoveryPort;
    }

    public long getEvictionTimeout() {
        return evictionTimeout;
    }

    public String getEvictionStrategyType() {
        return evictionStrategyType;
    }

    public String getEvictionStrategyValue() {
        return evictionStrategyValue;
    }

    public abstract static class EurekaServerConfigBuilder>
            extends EurekaBootstrapConfigBuilder {
        protected int registrationPort = EurekaTransports.DEFAULT_REGISTRATION_PORT;
        protected int replicationPort = EurekaTransports.DEFAULT_REPLICATION_PORT;
        protected int discoveryPort = EurekaTransports.DEFAULT_DISCOVERY_PORT;
        protected long evictionTimeout = DEFAULT_EVICTION_TIMEOUT;
        protected StrategyType evictionStrategyType = StrategyType.PercentageDrop;
        protected String evictionStrategyValue = "20";

        protected EurekaServerConfigBuilder() {
        }

        public B withRegistrationPort(int writeServerPort) {
            this.registrationPort = writeServerPort;
            return self();
        }

        public B withReplicationPort(int replicationPort) {
            this.replicationPort = replicationPort;
            return self();
        }

        public B withDiscoveryPort(int readServerPort) {
            this.discoveryPort = readServerPort;
            return self();
        }

        public B withEvictionTimeout(long evictionTimeout) {
            this.evictionTimeout = evictionTimeout;
            return self();
        }

        public B withEvictionStrategyType(StrategyType strategyType) {
            this.evictionStrategyType = strategyType;
            return self();
        }

        public B withEvictionStrategyValue(String strategyValue) {
            this.evictionStrategyValue = strategyValue;
            return self();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy