问题描述
我正在尝试侦听 Redis 集群的不同节点中的到期事件。 Redis 集群有 3 个主节点。出于某种原因,该应用程序仅订阅了一个随机的 Redis 节点。我发现了以下 thread 但解决方法是侦听所有主节点。我也尝试过 Jedis 库。如何强制 Spring 配置侦听所有节点?这是我当前的配置:
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(Arrays.asList("172.18.0.2:6379,172.18.0.3:6379,172.18.0.4:6379".split(",")));
clusterConfiguration.setMaxRedirects(10000);
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(clusterConfiguration);
return lettuceConnectionFactory;
}
@Bean
RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory,@Qualifier("expirationListenerAdapter") MessageListenerAdapter expirationListenerAdapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory);
container.addMessageListener(expirationListenerAdapter,new PatternTopic("__keyevent@*__:expired"));
return container;
}
@Bean("expirationListenerAdapter")
MessageListenerAdapter expirationListenerAdapter(RedisReceiver redisReceiver) {
return new MessageListenerAdapter(ListenerClass,"expiredEvent");
}
@Bean
ListenerClass receiver() {
return new ListenerClass();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)