использовать весеннюю загрузку данных redis подключиться к проблеме с кластером redis - PullRequest
0 голосов
/ 18 марта 2019

Я использовал Redis данных весенней загрузки для подключения к кластеру Redis, используя версию 2.1.3. Конфигурация выглядит следующим образом:

@Bean
@Primary
public RedisConnectionFactory myLettuceConnectionFactory(GenericObjectPoolConfig poolConfig) {
    RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
    final List<String> nodeList = redisProperties.getCluster().getNodes();
    Set<RedisNode> nodes = new HashSet<RedisNode>();
    for (String ipPort : nodeList) {
        String[] ipAndPort = ipPort.split(":");
        nodes.add(new RedisNode(ipAndPort[0].trim(), Integer.valueOf(ipAndPort[1])));
    }
    redisClusterConfiguration.setPassword(RedisPassword.of(redisProperties.getPassword()));
    redisClusterConfiguration.setClusterNodes(nodes);
    redisClusterConfiguration.setMaxRedirects(redisProperties.getCluster().getMaxRedirects());
    LettuceClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
            .commandTimeout(redisProperties.getTimeout())
            .poolConfig(poolConfig)
            .build();

    RedisClusterClient clusterClient ;

    LettuceConnectionFactory factory = new LettuceConnectionFactory(redisClusterConfiguration,clientConfig);
    return factory;
}

Однако во время операции всегда будет получено сообщение об исключении WARN.следующим образом:

error log

Что ж, похоже, это проблема с салатом, Как сопоставить удаленный хост и порт с localhost с помощью Lettuce , но я не знаю, как использовать его при весенней загрузке данных.Любое решение приветствуется, спасибо

1 Ответ

0 голосов
/ 20 марта 2019

У меня есть ответ, поэтому давайте определим ClinentRourse следующим образом:

 MappingSocketAddressResolver resolver = MappingSocketAddressResolver.create(DnsResolvers.UNRESOLVED ,
            hostAndPort -> {
                if(hostAndPort.getHostText().startsWith("172.31")){
                    return HostAndPort.of(ipStr, hostAndPort.getPort());
                }
                return hostAndPort;
            });

    ClientResources clientResources = ClientResources.builder()
            .socketAddressResolver(resolver)
            .build();

Затем с помощью установленного метода LettuceClientConfiguration.clientResources нормальная работа салата.

...