@Experimental public final class MultiDbConfig extends java.lang.Object
This configuration enables seamless failover between multiple Redis databases endpoints by
providing comprehensive settings for retry logic, circuit breaker behavior, health checks, and
failback mechanisms. It is designed to work with
MultiDbConnectionProvider to provide high availability and
disaster recovery capabilities.
Key Features:
Usage Example:
{
@code
// Configure individual databases
DatabaseConfig primary = DatabaseConfig.builder(primaryEndpoint, clientConfig).weight(1.0f)
.build();
DatabaseConfig secondary = DatabaseConfig.builder(secondaryEndpoint, clientConfig).weight(0.5f)
.healthCheckEnabled(true).build();
// Build multi-database configuration
MultiDbConfig config = MultiDbConfig.builder(primary, secondary)
.failureDetector(CircuitBreakerConfig.builder().failureRateThreshold(10.0f).build())
.commandRetry(RetryConfig.builder().maxAttempts(3).build()).failbackSupported(true)
.gracePeriod(10000).build();
// Use with connection provider
MultiDbConnectionProvider provider = new MultiDbConnectionProvider(config);
}
The configuration leverages Resilience4j for circuit breaker and retry implementations, providing battle-tested fault tolerance patterns.
MultiDbConnectionProvider,
HealthCheckStrategy,
PingStrategy,
LagAwareStrategy| Modifier and Type | Class and Description |
|---|---|
static class |
MultiDbConfig.Builder
Builder class for creating MultiDbConfig instances with comprehensive configuration options.
|
static class |
MultiDbConfig.CircuitBreakerConfig
Configuration for circuit breaker failure detection.
|
static class |
MultiDbConfig.DatabaseConfig
Configuration class for individual Redis database endpoints within a multi-database setup.
|
static class |
MultiDbConfig.RetryConfig
Configuration for command retry behavior.
|
static interface |
MultiDbConfig.StrategySupplier
Functional interface for creating
HealthCheckStrategy instances for specific Redis
endpoints. |
| Constructor and Description |
|---|
MultiDbConfig(MultiDbConfig.DatabaseConfig[] databaseConfigs)
Constructs a new MultiDbConfig with the specified database configurations.
|
| Modifier and Type | Method and Description |
|---|---|
static MultiDbConfig.Builder |
builder()
Creates a new Builder instance for configuring MultiDbConfig.
|
static MultiDbConfig.Builder |
builder(java.util.List<MultiDbConfig.DatabaseConfig> databaseConfigs)
Creates a new Builder instance for configuring MultiDbConfig.
|
static MultiDbConfig.Builder |
builder(MultiDbConfig.DatabaseConfig[] databaseConfigs)
Creates a new Builder instance for configuring MultiDbConfig.
|
MultiDbConfig.RetryConfig |
getCommandRetry()
Returns the encapsulated retry configuration for command execution.
|
MultiDbConfig.DatabaseConfig[] |
getDatabaseConfigs()
Returns the array of database configurations defining available Redis endpoints.
|
int |
getDelayInBetweenFailoverAttempts()
Returns the delay in milliseconds between failover attempts.
|
long |
getFailbackCheckInterval()
Returns the interval between checks for failback opportunities.
|
MultiDbConfig.CircuitBreakerConfig |
getFailureDetector()
Returns the encapsulated circuit breaker configuration for failure detection.
|
java.util.List<java.lang.Class<? extends java.lang.Throwable>> |
getFallbackExceptionList()
Returns the list of exception classes that trigger immediate fallback to next database.
|
long |
getGracePeriod()
Returns the grace period to keep databases disabled after they become unhealthy.
|
int |
getMaxNumFailoverAttempts()
Returns the maximum number of failover attempts.
|
boolean |
isFailbackSupported()
Returns whether automatic failback to higher-priority databases is supported.
|
boolean |
isFastFailover()
Returns whether connections are forcefully terminated during failover.
|
boolean |
isRetryOnFailover()
Returns whether failed commands are retried during failover.
|
public MultiDbConfig(MultiDbConfig.DatabaseConfig[] databaseConfigs)
This constructor validates that at least one database configuration is provided and that all
configurations are non-null. Use the Builder class for more convenient configuration
with default values.
databaseConfigs - array of database configurations defining the available Redis endpointsJedisValidationException - if databaseConfigs is null or emptyjava.lang.IllegalArgumentException - if any database configuration is nullBuilder#Builder(DatabaseConfig[])public MultiDbConfig.DatabaseConfig[] getDatabaseConfigs()
public MultiDbConfig.RetryConfig getCommandRetry()
This provides access to all retry-related settings through a single configuration object.
MultiDbConfig.RetryConfigpublic MultiDbConfig.CircuitBreakerConfig getFailureDetector()
This provides access to all circuit breaker-related settings through a single configuration object.
MultiDbConfig.CircuitBreakerConfigpublic java.util.List<java.lang.Class<? extends java.lang.Throwable>> getFallbackExceptionList()
fallbackExceptionListpublic boolean isRetryOnFailover()
retryOnFailoverpublic boolean isFailbackSupported()
isFailbackSupportedpublic long getFailbackCheckInterval()
failbackCheckIntervalpublic long getGracePeriod()
gracePeriodpublic int getMaxNumFailoverAttempts()
maxNumFailoverAttemptspublic int getDelayInBetweenFailoverAttempts()
delayInBetweenFailoverAttemptspublic boolean isFastFailover()
fastFailoverpublic static MultiDbConfig.Builder builder()
At least one database configuration must be added to the builder before calling build(). Use the endpoint() methods to add database configurations.
JedisValidationException - if databaseConfigs is null or emptyBuilder#Builder(DatabaseConfig[])public static MultiDbConfig.Builder builder(MultiDbConfig.DatabaseConfig[] databaseConfigs)
databaseConfigs - array of database configurations defining available Redis endpointsJedisValidationException - if databaseConfigs is null or emptyBuilder#Builder(DatabaseConfig[])public static MultiDbConfig.Builder builder(java.util.List<MultiDbConfig.DatabaseConfig> databaseConfigs)
databaseConfigs - list of database configurations defining available Redis endpointsJedisValidationException - if databaseConfigs is null or emptyBuilder#Builder(List)Copyright © 2025. All rights reserved.