Как получить список текущих подписок на Redis из Java

Я пишу приложение, в котором один процесс должен отправлять данные на несколько каналов подписки. Процесс не знает каналы заранее (поскольку клиенты подписываются на разные темы), поэтому мне нужно будет запросить все активные подписки, чтобы узнать, какие данные нужно получать и отправлять. Я нашел команду Redis:

127.0.0.1:6379> pubsub channels

Однако: 1. Он всегда возвращает пустой список. 2. Я не могу найти эквивалент Java ни в реализации Jedis, ни в реализации Spring.


person Roman Smolgovsky    schedule 17.11.2015    source источник


Ответы (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 имеет каналы, на которые подписано это соединение.

person Nebras    schedule 13.01.2016
comment
тебе это помогает @nemiga ? - person Nebras; 16.01.2016