public class MultiClusterPooledConnectionProvider extends java.lang.Object implements ConnectionProvider
ConnectionProvider which supports multiple cluster/database endpoints each with their own isolated connection pool. With this ConnectionProvider users can seamlessly failover to Disaster Recovery (DR), Backup, and Active-Active cluster(s) by using simple configuration which is passed through from Resilience4j - https://resilience4j.readme.io/docs
Support for manual failback is provided by way of setActiveMultiClusterIndex(int)
Modifier and Type | Class and Description |
---|---|
static class |
MultiClusterPooledConnectionProvider.Cluster |
Constructor and Description |
---|
MultiClusterPooledConnectionProvider(MultiClusterClientConfig multiClusterClientConfig) |
Modifier and Type | Method and Description |
---|---|
void |
close() |
MultiClusterPooledConnectionProvider.Cluster |
getCluster() |
io.github.resilience4j.circuitbreaker.CircuitBreaker |
getClusterCircuitBreaker() |
io.github.resilience4j.circuitbreaker.CircuitBreaker |
getClusterCircuitBreaker(int multiClusterIndex) |
Connection |
getConnection() |
Connection |
getConnection(CommandArguments args) |
Connection |
getConnection(int multiClusterIndex) |
java.util.Map<?,Pool<Connection>> |
getConnectionMap() |
java.util.List<java.lang.Class<? extends java.lang.Throwable>> |
getFallbackExceptionList() |
int |
incrementActiveMultiClusterIndex()
Increments the actively used cluster/database endpoint (connection pool) amongst the pre-configured list which were
provided at startup via the MultiClusterClientConfig.
|
boolean |
isLastClusterCircuitBreakerForcedOpen() |
void |
runClusterFailoverPostProcessor(java.lang.Integer multiClusterIndex) |
void |
setActiveMultiClusterIndex(int multiClusterIndex)
Manually overrides the actively used cluster/database endpoint (connection pool) amongst the
pre-configured list which were provided at startup via the MultiClusterClientConfig.
|
void |
setClusterFailoverPostProcessor(java.util.function.Consumer<java.lang.String> clusterFailoverPostProcessor) |
void |
validateTargetConnection(int multiClusterIndex)
Design decision was made to defer responsibility for cross-replication validation to the user.
|
public MultiClusterPooledConnectionProvider(MultiClusterClientConfig multiClusterClientConfig)
public int incrementActiveMultiClusterIndex()
public void validateTargetConnection(int multiClusterIndex)
public void setActiveMultiClusterIndex(int multiClusterIndex)
public void close()
close
in interface java.lang.AutoCloseable
public Connection getConnection()
getConnection
in interface ConnectionProvider
public Connection getConnection(int multiClusterIndex)
public Connection getConnection(CommandArguments args)
getConnection
in interface ConnectionProvider
public java.util.Map<?,Pool<Connection>> getConnectionMap()
getConnectionMap
in interface ConnectionProvider
public MultiClusterPooledConnectionProvider.Cluster getCluster()
public io.github.resilience4j.circuitbreaker.CircuitBreaker getClusterCircuitBreaker()
public io.github.resilience4j.circuitbreaker.CircuitBreaker getClusterCircuitBreaker(int multiClusterIndex)
public boolean isLastClusterCircuitBreakerForcedOpen()
public void runClusterFailoverPostProcessor(java.lang.Integer multiClusterIndex)
public void setClusterFailoverPostProcessor(java.util.function.Consumer<java.lang.String> clusterFailoverPostProcessor)
public java.util.List<java.lang.Class<? extends java.lang.Throwable>> getFallbackExceptionList()
Copyright © 2024. All rights reserved.