Как получить список текущих подписок на Redis из Java
Я пишу приложение, в котором один процесс должен отправлять данные на несколько каналов подписки. Процесс не знает каналы заранее (так как клиенты подписываются на разные темы), поэтому мне нужно будет запросить все активные подписки, чтобы узнать, какие данные получать и отправлять. Я нашел команду Redis:
127.0.0.1:6379> pubsub channels
Однако: 1. Он всегда возвращает пустой список 2. Я не могу найти эквивалент Java ни в Jedis, ни в Spring-реализации.
1 ответ
На основании того, что я понимаю из вашего порта и на основе методики документации getSubscription()
(Возвращает текущую подписку для этого подключения или ноль, если подключение не подписано.), Я думаю, это поможет вам.
redisTemplate.execute(new RedisCallback<Object>(){
@Override
public Object doInRedis(RedisConnection connection) throws DataAccessException {
Subscription susb = connection.getSubscription();
Collection<byte[]> channels = susb.getChannels();
return null;
}
});
Subscription
имеет каналы, на которые подписано это соединение.