Add natMap for Sentinel configuration

pull/2096/head
Fernando Giannetti 6 years ago
parent c4b1ebdee9
commit 3716299bea
No known key found for this signature in database
GPG Key ID: BC94173DBBFF9982

@ -17,7 +17,11 @@ package org.redisson.config;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.redisson.misc.URIBuilder;
/**
@ -29,6 +33,8 @@ public class SentinelServersConfig extends BaseMasterSlaveServersConfig<Sentinel
private List<URI> sentinelAddresses = new ArrayList<URI>();
private Map<String, String> natMap = Collections.emptyMap();
private String masterName;
/**
@ -50,6 +56,7 @@ public class SentinelServersConfig extends BaseMasterSlaveServersConfig<Sentinel
setMasterName(config.getMasterName());
setDatabase(config.getDatabase());
setScanInterval(config.getScanInterval());
setNatMap(new HashMap<>(config.getNatMap()));
}
/**
@ -114,4 +121,19 @@ public class SentinelServersConfig extends BaseMasterSlaveServersConfig<Sentinel
return this;
}
public Map<String, String> getNatMap() {
return natMap;
}
/**
* Defines NAT mapping. Address as a map key is replaced with mapped address as value.
*
* @param natMap - nat mapping
* @return config
*/
public SentinelServersConfig setNatMap(Map<String, String> natMap) {
this.natMap = natMap;
return this;
}
}

@ -73,6 +73,8 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
private ScheduledFuture<?> monitorFuture;
private AddressResolver<InetSocketAddress> sentinelResolver;
private final Map<String, String> natMap;
public SentinelConnectionManager(SentinelServersConfig cfg, Config config, UUID id) {
super(config, id);
@ -86,6 +88,8 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
this.config = create(cfg);
initTimer(this.config);
this.natMap=cfg.getNatMap();
this.sentinelResolver = resolverGroup.getResolver(getGroup().next());
for (URI addr : cfg.getSentinelAddresses()) {
@ -438,7 +442,10 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
private String createAddress(String host, Object port) {
if (host.contains(":") && !host.startsWith("[")) {
host = "[" + host + "]";
String[] splittedHost= host.split(":");
host = "[" + applyNatMap(splittedHost[0]) + splittedHost[1] + "]";
}else {
host=applyNatMap(host);
}
return "redis://" + host + ":" + port;
}
@ -582,5 +589,13 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
super.shutdown();
}
private String applyNatMap(String ip) {
String mappedAddress = natMap.get(ip);
if (mappedAddress != null) {
return mappedAddress;
}
return ip;
}
}

Loading…
Cancel
Save