5 changed files with 312 additions and 3 deletions
@ -0,0 +1,104 @@
@@ -0,0 +1,104 @@
|
||||
/* |
||||
* Copyright 2013-2014 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 org.springframework.platform.netflix.eureka; |
||||
|
||||
import javax.servlet.ServletContext; |
||||
import javax.servlet.ServletContextEvent; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; |
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; |
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties; |
||||
import org.springframework.context.ApplicationContext; |
||||
import org.springframework.context.SmartLifecycle; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.web.context.ServletContextAware; |
||||
|
||||
import com.netflix.blitz4j.LoggingConfiguration; |
||||
import com.netflix.eureka.EurekaBootStrap; |
||||
import com.netflix.eureka.EurekaServerConfig; |
||||
import com.netflix.eureka.EurekaServerConfigurationManager; |
||||
|
||||
/** |
||||
* @author Dave Syer |
||||
* |
||||
*/ |
||||
@Configuration |
||||
@EnableConfigurationProperties(EurekaServerConfigBean.class) |
||||
@ConditionalOnClass(EurekaServerConfig.class) |
||||
@ConditionalOnExpression("${eureka.server.enabled:true}") |
||||
public class EurekaServerAutoConfiguration implements ServletContextAware, |
||||
SmartLifecycle { |
||||
|
||||
@Autowired |
||||
private EurekaServerConfig eurekaServerConfig; |
||||
|
||||
private ServletContext servletContext; |
||||
|
||||
@Autowired |
||||
private ApplicationContext applicationContext; |
||||
|
||||
private boolean running; |
||||
|
||||
@Override |
||||
public void setServletContext(ServletContext servletContext) { |
||||
this.servletContext = servletContext; |
||||
} |
||||
|
||||
@Override |
||||
public void start() { |
||||
new Thread(new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
new EurekaBootStrap() { |
||||
@Override |
||||
protected void initEurekaEnvironment() { |
||||
LoggingConfiguration.getInstance().configure(); |
||||
EurekaServerConfigurationManager.getInstance() |
||||
.setConfiguration(eurekaServerConfig); |
||||
} |
||||
}.contextInitialized(new ServletContextEvent(servletContext)); |
||||
running = true; |
||||
} |
||||
}).start(); |
||||
} |
||||
|
||||
@Override |
||||
public void stop() { |
||||
running = false; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isRunning() { |
||||
return running; |
||||
} |
||||
|
||||
@Override |
||||
public int getPhase() { |
||||
return 0; |
||||
} |
||||
|
||||
@Override |
||||
public boolean isAutoStartup() { |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
public void stop(Runnable callback) { |
||||
callback.run(); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,182 @@
@@ -0,0 +1,182 @@
|
||||
/* |
||||
* Copyright 2013-2014 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 org.springframework.platform.netflix.eureka; |
||||
|
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
import java.util.Set; |
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import com.netflix.eureka.EurekaServerConfig; |
||||
|
||||
/** |
||||
* @author Dave Syer |
||||
* |
||||
*/ |
||||
@Data |
||||
@ConfigurationProperties("eureka.server") |
||||
public class EurekaServerConfigBean implements EurekaServerConfig { |
||||
|
||||
private static final int MINUTES = 60 * 1000; |
||||
|
||||
private String aWSAccessId; |
||||
|
||||
private String aWSSecretKey; |
||||
|
||||
private int eIPBindRebindRetries = 3; |
||||
|
||||
private int eIPBindingRetryIntervalMs = 5 * MINUTES; |
||||
|
||||
private boolean enableSelfPreservation = true; |
||||
@Override |
||||
public boolean shouldEnableSelfPreservation() { |
||||
return enableSelfPreservation; |
||||
} |
||||
|
||||
private double renewalPercentThreshold = 0.85; |
||||
|
||||
private int renewalThresholdUpdateIntervalMs = 10 * MINUTES; |
||||
|
||||
private int peerEurekaNodesUpdateIntervalMs = 15 * MINUTES; |
||||
|
||||
private int numberOfReplicationRetries = 5; |
||||
|
||||
private int peerEurekaStatusRefreshTimeIntervalMs = 30 * 1000; |
||||
|
||||
private int waitTimeInMsWhenSyncEmpty = 5 * MINUTES; |
||||
|
||||
private int peerNodeConnectTimeoutMs = 200; |
||||
|
||||
private int peerNodeReadTimeoutMs = 200; |
||||
|
||||
private int peerNodeTotalConnections = 1000; |
||||
|
||||
private int peerNodeTotalConnectionsPerHost = 500; |
||||
|
||||
private int peerNodeConnectionIdleTimeoutSeconds = 30; |
||||
|
||||
private long retentionTimeInMSInDeltaQueue = 3 * MINUTES; |
||||
|
||||
private long deltaRetentionTimerIntervalInMs = 30 * 1000; |
||||
|
||||
private long evictionIntervalTimerInMs = 60 * 1000; |
||||
|
||||
private int aSGQueryTimeoutMs = 300; |
||||
|
||||
private long aSGUpdateIntervalMs = 5 * MINUTES; |
||||
|
||||
private long responseCacheAutoExpirationInSeconds = 180; |
||||
|
||||
private long responseCacheUpdateIntervalMs = 30 * 1000; |
||||
|
||||
private boolean disableDelta; |
||||
@Override |
||||
public boolean shouldDisableDelta() { |
||||
return disableDelta; |
||||
} |
||||
|
||||
private long maxIdleThreadInMinutesAgeForStatusReplication = 10; |
||||
|
||||
private int minThreadsForStatusReplication = 1; |
||||
|
||||
private int maxThreadsForStatusReplication = 1; |
||||
|
||||
private int maxElementsInStatusReplicationPool = 10000; |
||||
|
||||
private boolean syncWhenTimestampDiffers = true; |
||||
@Override |
||||
public boolean shouldSyncWhenTimestampDiffers() { |
||||
return syncWhenTimestampDiffers; |
||||
} |
||||
|
||||
private int registrySyncRetries = 5; |
||||
|
||||
private int maxElementsInPeerReplicationPool = 10000; |
||||
|
||||
private long maxIdleThreadAgeInMinutesForPeerReplication = 15; |
||||
|
||||
private int minThreadsForPeerReplication = 5; |
||||
|
||||
private int maxThreadsForPeerReplication = 20; |
||||
|
||||
private int maxTimeForReplication = 30000; |
||||
|
||||
private boolean primeAwsReplicaConnections = true; |
||||
@Override |
||||
public boolean shouldPrimeAwsReplicaConnections() { |
||||
return primeAwsReplicaConnections; |
||||
} |
||||
|
||||
private boolean disableDeltaForRemoteRegions; |
||||
@Override |
||||
public boolean shouldDisableDeltaForRemoteRegions() { |
||||
return disableDeltaForRemoteRegions; |
||||
} |
||||
|
||||
private int remoteRegionConnectTimeoutMs = 1000; |
||||
|
||||
private int remoteRegionReadTimeoutMs = 1000; |
||||
|
||||
private int remoteRegionTotalConnections = 1000; |
||||
|
||||
private int remoteRegionTotalConnectionsPerHost = 500; |
||||
|
||||
private int remoteRegionConnectionIdleTimeoutSeconds = 30; |
||||
|
||||
private boolean gZipContentFromRemoteRegion = true; |
||||
@Override |
||||
public boolean shouldGZipContentFromRemoteRegion() { |
||||
return gZipContentFromRemoteRegion; |
||||
} |
||||
|
||||
private Map<String, String> remoteRegionUrlsWithName = new HashMap<String, String>(); |
||||
|
||||
private String[] remoteRegionUrls; |
||||
|
||||
private Map<String, Set<String>> remoteRegionAppWhitelist; |
||||
@Override |
||||
public Set<String> getRemoteRegionAppWhitelist(String regionName) { |
||||
if (null == regionName) { |
||||
regionName = "global"; |
||||
} else { |
||||
regionName = regionName.trim().toLowerCase(); |
||||
} |
||||
return remoteRegionAppWhitelist.get(regionName); |
||||
} |
||||
|
||||
private int remoteRegionRegistryFetchInterval = 30; |
||||
|
||||
private String remoteRegionTrustStore = ""; |
||||
|
||||
private String remoteRegionTrustStorePassword = "changeit"; |
||||
|
||||
private boolean disableTransparentFallbackToOtherRegion; |
||||
@Override |
||||
public boolean disableTransparentFallbackToOtherRegion() { |
||||
return disableTransparentFallbackToOtherRegion; |
||||
} |
||||
|
||||
private boolean batchReplication; |
||||
|
||||
@Override |
||||
public boolean shouldBatchReplication() { |
||||
return batchReplication; |
||||
} |
||||
|
||||
} |
@ -1,4 +1,5 @@
@@ -1,4 +1,5 @@
|
||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ |
||||
org.springframework.platform.netflix.archaius.ArchaiusAutoConfiguration,\ |
||||
org.springframework.platform.netflix.eureka.EurekaClientAutoConfiguration,\ |
||||
org.springframework.platform.netflix.eureka.EurekaServerAutoConfiguration,\ |
||||
org.springframework.platform.netflix.feign.FeignAutoConfiguration |
Loading…
Reference in new issue