Я устанавливаю сервер, который может прослушивать и отправлять сообщения о любых событиях в базе данных Redis. Я успешно получаю уведомления о новых событиях для хоста и порта Redis, но не могу сделать это для кластера Redis.
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxTotal(30);
config.setMaxWaitMillis(2000);
Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
jedisClusterNode.add(new HostAndPort("127.0.0.1", 7001));
JedisCluster cluster1 = new JedisCluster(jedisClusterNode, config);
String redisProperties = cluster1.getClusterNodes().toString().replaceAll("[{}]", "");
Set<HostAndPort> nodes = new HashSet<>();
String[] mainArray = redisProperties.split(",");
for (int i = 0; i < mainArray.length; i++) {
String[] equalArray = mainArray[i].split("=");
String mainData = equalArray[0];
String[] ipPortPair = mainData.split(":");
nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));
}
JedisCluster cluster = new JedisCluster(nodes, 10000, 1000, 1, config);
jedis.configSet ("notify-keyspace-events", "AKE"); // Для всех видов событий
jedis.psubscribe (новый KeyListenerCluster (), " keyevent @ 0 : *");
Я могу выполнить любую другую операцию с использованием Redis-кластера, но не могу сделать одну вещь.
cluster.configSet ("notify-keyspace-events", "AKE"); // Для всех видов событий
cluster.psubscribe (новый KeyListenerCluster (), " keyevent @ 0 : *");