Use a single configuration URI for Redis clusters

This commit is contained in:
Jon Chambers 2021-09-27 14:01:05 -04:00 committed by Jon Chambers
parent 8359ef73f4
commit 4aaae3f445
2 changed files with 27 additions and 30 deletions

View File

@ -11,41 +11,40 @@ import javax.validation.Valid;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.Duration; import java.time.Duration;
import java.util.List;
public class RedisClusterConfiguration { public class RedisClusterConfiguration {
@JsonProperty @JsonProperty
@NotEmpty @NotEmpty
private List<String> urls; private String configurationUri;
@JsonProperty @JsonProperty
@NotNull @NotNull
private Duration timeout = Duration.ofMillis(3_000); private Duration timeout = Duration.ofMillis(3_000);
@JsonProperty @JsonProperty
@NotNull @NotNull
@Valid @Valid
private CircuitBreakerConfiguration circuitBreaker = new CircuitBreakerConfiguration(); private CircuitBreakerConfiguration circuitBreaker = new CircuitBreakerConfiguration();
@JsonProperty @JsonProperty
@NotNull @NotNull
@Valid @Valid
private RetryConfiguration retry = new RetryConfiguration(); private RetryConfiguration retry = new RetryConfiguration();
public List<String> getUrls() { public String getConfigurationUri() {
return urls; return configurationUri;
} }
public Duration getTimeout() { public Duration getTimeout() {
return timeout; return timeout;
} }
public CircuitBreakerConfiguration getCircuitBreakerConfiguration() { public CircuitBreakerConfiguration getCircuitBreakerConfiguration() {
return circuitBreaker; return circuitBreaker;
} }
public RetryConfiguration getRetryConfiguration() { public RetryConfiguration getRetryConfiguration() {
return retry; return retry;
} }
} }

View File

@ -11,7 +11,6 @@ import io.github.resilience4j.circuitbreaker.CircuitBreaker;
import io.github.resilience4j.retry.Retry; import io.github.resilience4j.retry.Retry;
import io.lettuce.core.RedisCommandTimeoutException; import io.lettuce.core.RedisCommandTimeoutException;
import io.lettuce.core.RedisException; import io.lettuce.core.RedisException;
import io.lettuce.core.RedisURI;
import io.lettuce.core.cluster.ClusterClientOptions; import io.lettuce.core.cluster.ClusterClientOptions;
import io.lettuce.core.cluster.ClusterTopologyRefreshOptions; import io.lettuce.core.cluster.ClusterTopologyRefreshOptions;
import io.lettuce.core.cluster.RedisClusterClient; import io.lettuce.core.cluster.RedisClusterClient;
@ -24,7 +23,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors;
import org.whispersystems.textsecuregcm.configuration.CircuitBreakerConfiguration; import org.whispersystems.textsecuregcm.configuration.CircuitBreakerConfiguration;
import org.whispersystems.textsecuregcm.configuration.RedisClusterConfiguration; import org.whispersystems.textsecuregcm.configuration.RedisClusterConfiguration;
import org.whispersystems.textsecuregcm.configuration.RetryConfiguration; import org.whispersystems.textsecuregcm.configuration.RetryConfiguration;
@ -51,7 +49,7 @@ public class FaultTolerantRedisCluster {
public FaultTolerantRedisCluster(final String name, final RedisClusterConfiguration clusterConfiguration, final ClientResources clientResources) { public FaultTolerantRedisCluster(final String name, final RedisClusterConfiguration clusterConfiguration, final ClientResources clientResources) {
this(name, this(name,
RedisClusterClient.create(clientResources, clusterConfiguration.getUrls().stream().map(RedisURI::create).collect(Collectors.toList())), RedisClusterClient.create(clientResources, clusterConfiguration.getConfigurationUri()),
clusterConfiguration.getTimeout(), clusterConfiguration.getTimeout(),
clusterConfiguration.getCircuitBreakerConfiguration(), clusterConfiguration.getCircuitBreakerConfiguration(),
clusterConfiguration.getRetryConfiguration()); clusterConfiguration.getRetryConfiguration());