RedisticMasterReplicaConfiguration不支持发布/订阅,因为缺少跨各个服务器的发布/订阅消息传播

vawmfj5a  于 2021-06-08  发布在  Redis
关注(0)|答案(0)|浏览(722)

我想申请 spring-session-data-redis 给我的 spring boot 项目。
但是打印的日志 Connection failure occurred. Restarting subscription task after 5000 ms 异常消息为 Pub/Sub connections not supported with Master/Replica configurations 我的redis配置是

public LettuceConnectionFactory lettuceConnectionFactory() {
    RedisStaticMasterReplicaConfiguration configuration = new RedisStaticMasterReplicaConfiguration(
    MASTER_HOST, MASTER_PORT);
    configuration.addNode(SLAVE_HOST, SLAVE_PORT);

    LettuceClientConfiguration clientConfig =
            LettuceClientConfiguration.builder().readFrom(ReadFrom.REPLICA_PREFERRED).build();

    return new LettuceConnectionFactory(configuration, clientConfig);
}

开发于 aws 环境。我的redis环境是从副本读写到主机
所以我们申请了 RedisStaticMasterReplicaConfiguration 根据下面的文件。
对于通过info命令报告非公共地址的环境(例如,在使用aws时),请使用redisticmasterreplicationconfiguration而不是redistandaloneconfiguration。
但是,它不支持 Pub/Sub 根据下面的文件。
请注意,RedisticMasterReplicaConfiguration不支持发布/订阅,因为缺少跨各个服务器的发布/订阅消息传播。
有什么好主意吗?
奇怪的是
打印日志 Connection failure occurred. Restarting subscription task after 5000 ms 但是,它工作得很好 redis )
其他信息:
正在尝试连接 Pub/Sub 通过这个。 org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration ```
@Bean
public RedisMessageListenerContainer springSessionRedisMessageListenerContainer(
RedisIndexedSessionRepository sessionRepository) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(this.redisConnectionFactory);
if (this.redisTaskExecutor != null) {
container.setTaskExecutor(this.redisTaskExecutor);
}
if (this.redisSubscriptionExecutor != null) {
container.setSubscriptionExecutor(this.redisSubscriptionExecutor);
}
container.addMessageListener(sessionRepository,
Arrays.asList(new ChannelTopic(sessionRepository.getSessionDeletedChannel()),
new ChannelTopic(sessionRepository.getSessionExpiredChannel())));
container.addMessageListener(sessionRepository,
Collections.singletonList(new PatternTopic(sessionRepository.getSessionCreatedChannelPrefix() + "*")));
return container;
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题