当前位置: 首页 > 知识库问答 >
问题:

Spring data redis与莴苣客户端和AWS elasticcache

华凡
2023-03-14

我使用springboot 2.3.9.RELEASE的莴苣客户端连接AWS redis elasticcache主/从。I'am able to write and read but a error is抛出每隔5000ms一次

这项服务对我的pourpose很好,但我想删除错误或知道如何修复它。

我已经读了很多关于它的书,用AWS配置spring数据redis的最好方法是使用RedisticMasterReplicaConfiguration来写主副本和从副本读取。

这是bean配置

    @Bean
    public LettuceConnectionFactory redisConnectionFactory() {

        LettuceClientConfiguration.LettuceClientConfigurationBuilder lettuceConfigBuilder = LettuceClientConfiguration.builder()
                .readFrom(ReadFrom.REPLICA_PREFERRED);
        lettuceConfigBuilder.useSsl();

        RedisStaticMasterReplicaConfiguration redisConfiguration = new RedisStaticMasterReplicaConfiguration(master, port); //master value is the Primary Endpoint value from aws elasticcache info
        redisConfiguration.addNode(replica, port); //replica value is the Reader Endpoint value from aws elasticcache info
        redisConfiguration.setPassword(password);

        return new LettuceConnectionFactory(redisConfiguration, lettuceConfigBuilder.build());
    }

当应用程序启动时,我能够写入和读取,但每5秒就会从RedisMessageListenerContainer抛出错误

"level":"ERROR","className":"org.springframework.data.redis.listener.RedisMessageListenerContainer","message":"Connection failure occurred. Restarting subscription task after 5000 ms "

但这是RedisMessageListenerContainer.handleSubscriptionException的原始错误

java.lang.UnsupportedOperationException: Pub/Sub connections not supported with Master/Replica configurations

共有1个答案

傅琦
2023-03-14

遗憾的是,RedisticMasterReplicaConfiguration不支持发布/订阅。详见下文。

https://docs.spring.io/html" target="_blank">spring-data/redis/docs/current/reference/html/#redis:write-从复制副本中主控读取

对于通过INFO命令报告非公共地址的环境(例如,当使用AWS时),请使用redisticmasterreplicationconfiguration而不是redistandaloneconfiguration。请注意,RedisticMasterReplicaConfiguration不支持发布/订阅,因为在各个服务器之间缺少发布/订阅消息传播。

 类似资料:
  • 我正在开发JDK 1.8,但我不知道为什么“发布”不起作用。Redis“set”命令正在处理数据。 代码段: 从日志调试输出:

  • 我使用redis与阿卡,所以我不需要阻止调用。生菜内置了异步未来调用。但是Jedis是Redis推荐的客户。有人能告诉我我是否正确地使用了它们。如果是这样,哪一个更好。 绝地武士我正在使用一个静态绝地武士连接池来获取con,并使用Akka future回调来处理结果。我在这里关心的是,当我使用另一个线程(可调用)来获得结果时,该线程最终将阻止该结果。而莴苣可能有更有效的方法。 莴苣 如果莴苣是异步

  • 我有一个带有一个主服务器和两个从服务器的Elasticache设置。我仍然不确定如何传递主从RedisURI列表以构建用于。我只看到对具有单个主机和端口的标准配置的支持。 我知道在为Redis主/从配置Spring Data Redis时会遇到类似的问题 但我认为它不适用于ElastiCache主/从设置,因为目前上述代码将尝试使用MasterSlaveTopologyProvider来发现从IP

  • 这类似于如何指定要运行哪个场景的问题 在问题中,他们给出了每个场景使用一个标记的示例。我想知道是否可以添加更多标签,比如在TestNG中,可以添加多个组。

  • 我注意到Rest客户端上有两个指南:MicroProfile和Vertx。既然微文件支持异步,那么使用基于Vertx的Rest客户端有什么好处?

  • 我想向https服务器发送POST请求并获得响应。下面是我在curl中所做的,它工作得很好。 这是我在围棋中尝试的代码片段。 程序挂起在最后一行,错误消息为 我觉得我的连接建立代码有问题,而不是服务器的问题,因为服务器与curl完美地工作。