Interface EurekaClientConfig
-
- All Known Implementing Classes:
DefaultEurekaClientConfig
public interface EurekaClientConfigConfiguration information required by the eureka clients to register an instance with Eureka server.Most of the required information is provided by the default configuration
Once the client is registered, users can look up information fromDefaultEurekaClientConfig. The users just need to provide the eureka server service urls. The Eureka server service urls can be configured by 2 mechanisms 1) By registering the information in the DNS. 2) By specifying it in the configuration.EurekaClientbased on virtual hostname (also called VIPAddress), the most common way of doing it or by other means to get the information necessary to talk to other instances registered with Eureka.Note that all configurations are not effective at runtime unless and otherwise specified.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Deprecated Methods Modifier and Type Method Description booleanallowRedirects()Indicates whether server can redirect a client request to a backup server/cluster.java.lang.StringfetchRegistryForRemoteRegions()Comma separated list of regions for which the eureka registry information will be fetched.java.lang.String[]getAvailabilityZones(java.lang.String region)Gets the list of availability zones (used in AWS data centers) for the region in which this instance resides.java.lang.StringgetBackupRegistryImpl()Gets the name of the implementation which implementsBackupRegistryto fetch the registry information as a fall back option for only the first time when the eureka client starts.intgetCacheRefreshExecutorExponentialBackOffBound()Cache refresh executor exponential back off related property.intgetCacheRefreshExecutorThreadPoolSize()The thread pool size for the cacheRefreshExecutor to initialise withjava.lang.StringgetClientDataAccept()java.lang.StringgetDecoderName()This is a transient config and once the latest codecs are stable, can be removed (as there will only be one)java.lang.StringgetDollarReplacement()Get a replacement string for Dollar sign$during serializing/deserializing information in eureka server.java.lang.StringgetEncoderName()This is a transient config and once the latest codecs are stable, can be removed (as there will only be one)java.lang.StringgetEscapeCharReplacement()Get a replacement string for underscore sign_during serializing/deserializing information in eureka server.intgetEurekaConnectionIdleTimeoutSeconds()Indicates how much time (in seconds) that the HTTP connections to eureka server can stay idle before it can be closed.intgetEurekaServerConnectTimeoutSeconds()Indicates how long to wait (in seconds) before a connection to eureka server needs to timeout.java.lang.StringgetEurekaServerDNSName()Gets the DNS name to be queried to get the list of eureka servers.This information is not required if the contract returns the service urls by implementinggetEurekaServerServiceUrls(String).java.lang.StringgetEurekaServerPort()Gets the port to be used to construct the service url to contact eureka server when the list of eureka servers come from the DNS.This information is not required if the contract returns the service urls by implementinggetEurekaServerServiceUrls(String).intgetEurekaServerReadTimeoutSeconds()Indicates how long to wait (in seconds) before a read from eureka server needs to timeout.java.util.List<java.lang.String>getEurekaServerServiceUrls(java.lang.String myZone)Gets the list of fully qualifiedURLs to communicate with eureka server.intgetEurekaServerTotalConnections()Gets the total number of connections that is allowed from eureka client to all eureka servers.intgetEurekaServerTotalConnectionsPerHost()Gets the total number of connections that is allowed from eureka client to a eureka server host.java.lang.StringgetEurekaServerURLContext()Gets the URL context to be used to construct the service url to contact eureka server when the list of eureka servers come from the DNS.This information is not required if the contract returns the service urls by implementinggetEurekaServerServiceUrls(String).intgetEurekaServiceUrlPollIntervalSeconds()Indicates how often(in seconds) to poll for changes to eureka server information.java.lang.StringgetExperimental(java.lang.String name)To avoid configuration API pollution when trying new/experimental or features or for the migration process, the corresponding configuration can be put into experimental configuration section.intgetHeartbeatExecutorExponentialBackOffBound()Heartbeat executor exponential back off related property.intgetHeartbeatExecutorThreadPoolSize()The thread pool size for the heartbeatExecutor to initialise withintgetInitialInstanceInfoReplicationIntervalSeconds()Indicates how long initially (in seconds) to replicate instance info to the eureka serverintgetInstanceInfoReplicationIntervalSeconds()Indicates how often(in seconds) to replicate instance changes to be replicated to the eureka server.java.lang.StringgetProxyHost()Gets the proxy host to eureka server if any.java.lang.StringgetProxyPassword()Gets the proxy password if any.java.lang.StringgetProxyPort()Gets the proxy port to eureka server if any.java.lang.StringgetProxyUserName()Gets the proxy user name if any.java.lang.StringgetRegion()Gets the region (used in AWS datacenters) where this instance resides.intgetRegistryFetchIntervalSeconds()Indicates how often(in seconds) to fetch the registry information from the eureka server.java.lang.StringgetRegistryRefreshSingleVipAddress()Indicates whether the client is only interested in the registry information for a single VIP.EurekaTransportConfiggetTransportConfig()For compatibility, return the transport layer config classbooleanshouldDisableDelta()Indicates whether the eureka client should disable fetching of delta and should rather resort to getting the full registry information.default booleanshouldEnforceFetchRegistryAtInit()If set to true, theEurekaClientinitialization should throw an exception at constructor time if the initial fetch of eureka registry information from the remote servers is unsuccessful.default booleanshouldEnforceRegistrationAtInit()If set to true, theEurekaClientinitialization should throw an exception at constructor time if an initial registration to the remote servers is unsuccessful.booleanshouldFetchRegistry()Indicates whether this client should fetch eureka registry information from eureka server.booleanshouldFilterOnlyUpInstances()Indicates whether to get the applications after filtering the applications for instances with onlyInstanceInfo.InstanceStatus.UPstates.booleanshouldGZipContent()Deprecated.gzip content encoding will be always enforced in the next minor Eureka release (see com.netflix.eureka.GzipEncodingEnforcingFilter).booleanshouldLogDeltaDiff()Indicates whether to log differences between the eureka server and the eureka client in terms of registry information.booleanshouldOnDemandUpdateStatusChange()If set to true, local status updates viaApplicationInfoManager.setInstanceStatus(com.netflix.appinfo.InstanceInfo.InstanceStatus)will trigger on-demand (but rate limited) register/updates to remote eureka serversbooleanshouldPreferSameZoneEureka()Indicates whether or not this instance should try to use the eureka server in the same zone for latency and/or other reason.booleanshouldRegisterWithEureka()Indicates whether or not this instance should register its information with eureka server for discovery by others.default booleanshouldUnregisterOnShutdown()Indicates whether the client should explicitly unregister itself from the remote server on client shutdown.booleanshouldUseDnsForFetchingServiceUrls()Indicates whether the eureka client should use the DNS mechanism to fetch a list of eureka servers to talk to.
-
-
-
Method Detail
-
getRegistryFetchIntervalSeconds
int getRegistryFetchIntervalSeconds()
Indicates how often(in seconds) to fetch the registry information from the eureka server.- Returns:
- the fetch interval in seconds.
-
getInstanceInfoReplicationIntervalSeconds
int getInstanceInfoReplicationIntervalSeconds()
Indicates how often(in seconds) to replicate instance changes to be replicated to the eureka server.- Returns:
- the instance replication interval in seconds.
-
getInitialInstanceInfoReplicationIntervalSeconds
int getInitialInstanceInfoReplicationIntervalSeconds()
Indicates how long initially (in seconds) to replicate instance info to the eureka server
-
getEurekaServiceUrlPollIntervalSeconds
int getEurekaServiceUrlPollIntervalSeconds()
Indicates how often(in seconds) to poll for changes to eureka server information.Eureka servers could be added or removed and this setting controls how soon the eureka clients should know about it.
- Returns:
- the interval to poll for eureka service url changes.
-
getProxyHost
java.lang.String getProxyHost()
Gets the proxy host to eureka server if any.- Returns:
- the proxy host.
-
getProxyPort
java.lang.String getProxyPort()
Gets the proxy port to eureka server if any.- Returns:
- the proxy port.
-
getProxyUserName
java.lang.String getProxyUserName()
Gets the proxy user name if any.- Returns:
- the proxy user name.
-
getProxyPassword
java.lang.String getProxyPassword()
Gets the proxy password if any.- Returns:
- the proxy password.
-
shouldGZipContent
boolean shouldGZipContent()
Deprecated.gzip content encoding will be always enforced in the next minor Eureka release (see com.netflix.eureka.GzipEncodingEnforcingFilter).Indicates whether the content fetched from eureka server has to be compressed whenever it is supported by the server. The registry information from the eureka server is compressed for optimum network traffic.- Returns:
- true, if the content need to be compressed, false otherwise.
-
getEurekaServerReadTimeoutSeconds
int getEurekaServerReadTimeoutSeconds()
Indicates how long to wait (in seconds) before a read from eureka server needs to timeout.- Returns:
- time in seconds before the read should timeout.
-
getEurekaServerConnectTimeoutSeconds
int getEurekaServerConnectTimeoutSeconds()
Indicates how long to wait (in seconds) before a connection to eureka server needs to timeout.Note that the connections in the client are pooled by
HttpClientand this setting affects the actual connection creation and also the wait time to get the connection from the pool.- Returns:
- time in seconds before the connections should timeout.
-
getBackupRegistryImpl
java.lang.String getBackupRegistryImpl()
Gets the name of the implementation which implementsBackupRegistryto fetch the registry information as a fall back option for only the first time when the eureka client starts.This may be needed for applications which needs additional resiliency for registry information without which it cannot operate.
- Returns:
- the class name which implements
BackupRegistry.
-
getEurekaServerTotalConnections
int getEurekaServerTotalConnections()
Gets the total number of connections that is allowed from eureka client to all eureka servers.- Returns:
- total number of allowed connections from eureka client to all eureka servers.
-
getEurekaServerTotalConnectionsPerHost
int getEurekaServerTotalConnectionsPerHost()
Gets the total number of connections that is allowed from eureka client to a eureka server host.- Returns:
- total number of allowed connections from eureka client to a eureka server.
-
getEurekaServerURLContext
java.lang.String getEurekaServerURLContext()
Gets the URL context to be used to construct the service url to contact eureka server when the list of eureka servers come from the DNS.This information is not required if the contract returns the service urls by implementinggetEurekaServerServiceUrls(String).The DNS mechanism is used when
shouldUseDnsForFetchingServiceUrls()is set to true and the eureka client expects the DNS to configured a certain way so that it can fetch changing eureka servers dynamically.The changes are effective at runtime.
- Returns:
- the string indicating the context
URIof the eureka server.
-
getEurekaServerPort
java.lang.String getEurekaServerPort()
Gets the port to be used to construct the service url to contact eureka server when the list of eureka servers come from the DNS.This information is not required if the contract returns the service urls by implementinggetEurekaServerServiceUrls(String).The DNS mechanism is used when
shouldUseDnsForFetchingServiceUrls()is set to true and the eureka client expects the DNS to configured a certain way so that it can fetch changing eureka servers dynamically.The changes are effective at runtime.
- Returns:
- the string indicating the port where the eureka server is listening.
-
getEurekaServerDNSName
java.lang.String getEurekaServerDNSName()
Gets the DNS name to be queried to get the list of eureka servers.This information is not required if the contract returns the service urls by implementinggetEurekaServerServiceUrls(String).The DNS mechanism is used when
shouldUseDnsForFetchingServiceUrls()is set to true and the eureka client expects the DNS to configured a certain way so that it can fetch changing eureka servers dynamically.The changes are effective at runtime.
- Returns:
- the string indicating the DNS name to be queried for eureka servers.
-
shouldUseDnsForFetchingServiceUrls
boolean shouldUseDnsForFetchingServiceUrls()
Indicates whether the eureka client should use the DNS mechanism to fetch a list of eureka servers to talk to. When the DNS name is updated to have additional servers, that information is used immediately after the eureka client polls for that information as specified ingetEurekaServiceUrlPollIntervalSeconds().Alternatively, the service urls can be returned
getEurekaServerServiceUrls(String), but the users should implement their own mechanism to return the updated list in case of changes.The changes are effective at runtime.
- Returns:
- true if the DNS mechanism should be used for fetching urls, false otherwise.
-
shouldRegisterWithEureka
boolean shouldRegisterWithEureka()
Indicates whether or not this instance should register its information with eureka server for discovery by others.In some cases, you do not want your instances to be discovered whereas you just want do discover other instances.
- Returns:
- true if this instance should register with eureka, false otherwise
-
shouldUnregisterOnShutdown
default boolean shouldUnregisterOnShutdown()
Indicates whether the client should explicitly unregister itself from the remote server on client shutdown.- Returns:
- true if this instance should unregister with eureka on client shutdown, false otherwise
-
shouldPreferSameZoneEureka
boolean shouldPreferSameZoneEureka()
Indicates whether or not this instance should try to use the eureka server in the same zone for latency and/or other reason.Ideally eureka clients are configured to talk to servers in the same zone
The changes are effective at runtime at the next registry fetch cycle as specified by
getRegistryFetchIntervalSeconds()- Returns:
- true if the eureka client should prefer the server in the same zone, false otherwise.
-
allowRedirects
boolean allowRedirects()
Indicates whether server can redirect a client request to a backup server/cluster. If set to false, the server will handle the request directly, If set to true, it may send HTTP redirect to the client, with a new server location.- Returns:
- true if HTTP redirects are allowed
-
shouldLogDeltaDiff
boolean shouldLogDeltaDiff()
Indicates whether to log differences between the eureka server and the eureka client in terms of registry information.Eureka client tries to retrieve only delta changes from eureka server to minimize network traffic. After receiving the deltas, eureka client reconciles the information from the server to verify it has not missed out some information. Reconciliation failures could happen when the client has had network issues communicating to server.If the reconciliation fails, eureka client gets the full registry information.
While getting the full registry information, the eureka client can log the differences between the client and the server and this setting controls that.
The changes are effective at runtime at the next registry fetch cycle as specified by
getRegistryFetchIntervalSeconds()- Returns:
- true if the eureka client should log delta differences in the case of reconciliation failure.
-
shouldDisableDelta
boolean shouldDisableDelta()
Indicates whether the eureka client should disable fetching of delta and should rather resort to getting the full registry information.Note that the delta fetches can reduce the traffic tremendously, because the rate of change with the eureka server is normally much lower than the rate of fetches.
The changes are effective at runtime at the next registry fetch cycle as specified by
getRegistryFetchIntervalSeconds()- Returns:
- true to enable fetching delta information for registry, false to get the full registry.
-
fetchRegistryForRemoteRegions
@Nullable java.lang.String fetchRegistryForRemoteRegions()
Comma separated list of regions for which the eureka registry information will be fetched. It is mandatory to define the availability zones for each of these regions as returned bygetAvailabilityZones(String). Failing to do so, will result in failure of discovery client startup.- Returns:
- Comma separated list of regions for which the eureka registry information will be fetched.
nullif no remote region has to be fetched.
-
getRegion
java.lang.String getRegion()
Gets the region (used in AWS datacenters) where this instance resides.- Returns:
- AWS region where this instance resides.
-
getAvailabilityZones
java.lang.String[] getAvailabilityZones(java.lang.String region)
Gets the list of availability zones (used in AWS data centers) for the region in which this instance resides.The changes are effective at runtime at the next registry fetch cycle as specified by
getRegistryFetchIntervalSeconds()- Parameters:
region- the region where this instance is deployed.- Returns:
- the list of available zones accessible by this instance.
-
getEurekaServerServiceUrls
java.util.List<java.lang.String> getEurekaServerServiceUrls(java.lang.String myZone)
Gets the list of fully qualifiedURLs to communicate with eureka server.Typically the eureka server
URLs carry protocol,host,port,context and version information if any.Example: http://ec2-256-156-243-129.compute-1.amazonaws.com:7001/eureka/v2/The changes are effective at runtime at the next service url refresh cycle as specified by
getEurekaServiceUrlPollIntervalSeconds()- Parameters:
myZone- the zone in which the instance is deployed.- Returns:
- the list of eureka server service urls for eureka clients to talk to.
-
shouldFilterOnlyUpInstances
boolean shouldFilterOnlyUpInstances()
Indicates whether to get the applications after filtering the applications for instances with onlyInstanceInfo.InstanceStatus.UPstates.The changes are effective at runtime at the next registry fetch cycle as specified by
getRegistryFetchIntervalSeconds()- Returns:
- true to filter, false otherwise.
-
getEurekaConnectionIdleTimeoutSeconds
int getEurekaConnectionIdleTimeoutSeconds()
Indicates how much time (in seconds) that the HTTP connections to eureka server can stay idle before it can be closed.In the AWS environment, it is recommended that the values is 30 seconds or less, since the firewall cleans up the connection information after a few mins leaving the connection hanging in limbo
- Returns:
- time in seconds the connections to eureka can stay idle before it can be closed.
-
shouldFetchRegistry
boolean shouldFetchRegistry()
Indicates whether this client should fetch eureka registry information from eureka server.- Returns:
trueif registry information has to be fetched,falseotherwise.
-
shouldEnforceFetchRegistryAtInit
default boolean shouldEnforceFetchRegistryAtInit()
If set to true, theEurekaClientinitialization should throw an exception at constructor time if the initial fetch of eureka registry information from the remote servers is unsuccessful. Note that ifshouldFetchRegistry()is set to false, then this config is a no-op.- Returns:
- true or false for whether the client initialization should enforce an initial fetch.
-
getRegistryRefreshSingleVipAddress
@Nullable java.lang.String getRegistryRefreshSingleVipAddress()
Indicates whether the client is only interested in the registry information for a single VIP.- Returns:
- the address of the VIP (name:port).
nullif single VIP interest is not present.
-
getHeartbeatExecutorThreadPoolSize
int getHeartbeatExecutorThreadPoolSize()
The thread pool size for the heartbeatExecutor to initialise with- Returns:
- the heartbeatExecutor thread pool size
-
getHeartbeatExecutorExponentialBackOffBound
int getHeartbeatExecutorExponentialBackOffBound()
Heartbeat executor exponential back off related property. It is a maximum multiplier value for retry delay, in case where a sequence of timeouts occurred.- Returns:
- maximum multiplier value for retry delay
-
getCacheRefreshExecutorThreadPoolSize
int getCacheRefreshExecutorThreadPoolSize()
The thread pool size for the cacheRefreshExecutor to initialise with- Returns:
- the cacheRefreshExecutor thread pool size
-
getCacheRefreshExecutorExponentialBackOffBound
int getCacheRefreshExecutorExponentialBackOffBound()
Cache refresh executor exponential back off related property. It is a maximum multiplier value for retry delay, in case where a sequence of timeouts occurred.- Returns:
- maximum multiplier value for retry delay
-
getDollarReplacement
java.lang.String getDollarReplacement()
Get a replacement string for Dollar sign$during serializing/deserializing information in eureka server.- Returns:
- Replacement string for Dollar sign
$.
-
getEscapeCharReplacement
java.lang.String getEscapeCharReplacement()
Get a replacement string for underscore sign_during serializing/deserializing information in eureka server.- Returns:
- Replacement string for underscore sign
_.
-
shouldOnDemandUpdateStatusChange
boolean shouldOnDemandUpdateStatusChange()
If set to true, local status updates viaApplicationInfoManager.setInstanceStatus(com.netflix.appinfo.InstanceInfo.InstanceStatus)will trigger on-demand (but rate limited) register/updates to remote eureka servers- Returns:
- true or false for whether local status updates should be updated to remote servers on-demand
-
shouldEnforceRegistrationAtInit
default boolean shouldEnforceRegistrationAtInit()
If set to true, theEurekaClientinitialization should throw an exception at constructor time if an initial registration to the remote servers is unsuccessful. Note that ifshouldRegisterWithEureka()is set to false, then this config is a no-op- Returns:
- true or false for whether the client initialization should enforce an initial registration
-
getEncoderName
java.lang.String getEncoderName()
This is a transient config and once the latest codecs are stable, can be removed (as there will only be one)- Returns:
- the class name of the encoding codec to use for the client. If none set a default codec will be used
-
getDecoderName
java.lang.String getDecoderName()
This is a transient config and once the latest codecs are stable, can be removed (as there will only be one)- Returns:
- the class name of the decoding codec to use for the client. If none set a default codec will be used
-
getClientDataAccept
java.lang.String getClientDataAccept()
- Returns:
Enum.name()for client data accept
-
getExperimental
java.lang.String getExperimental(java.lang.String name)
To avoid configuration API pollution when trying new/experimental or features or for the migration process, the corresponding configuration can be put into experimental configuration section. Config format is: eureka.experimental.freeFormConfigString- Returns:
- a property of experimental feature
-
getTransportConfig
EurekaTransportConfig getTransportConfig()
For compatibility, return the transport layer config class- Returns:
- an instance of
EurekaTransportConfig
-
-