Команда Redis SUBSCRIBE останавливает приложение

Я использую последнюю стабильную версию Redis и клиент 3.0.1 (я также пробовал 2.8.1) в Maven. Связь хорошая, если меняю адрес на плохой, то ошибка (хорошая). Эта команда работает в консоли Redis. Но если я использую его в приложении в новом потоке или одноразовом использовании, это зависание приложения (ноль ошибок, но приложение не отвечает). Почему это не работает? Как это исправить?

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.0.1</version>
</dependency>
new Jedis("localhost", 6379, 10000).subscribe(new JedisPubSub() {
    @Override
    public void onMessage(String channel, String message) {
        System.out.println(channel + message);
    }

    @Override
    public void onPMessage(String pattern, String channel, String message) { }

    @Override
    public void onSubscribe(String channel, int subscribedChannels) { }

    @Override
    public void onUnsubscribe(String channel, int subscribedChannels) { }

    @Override
    public void onPUnsubscribe(String pattern, int subscribedChannels) { }

    @Override
    public void onPSubscribe(String pattern, int subscribedChannels) { }

}, "test");

Укажите точные команды, которые вызывают проблему, как в консоли Redis, так и в вашем коде Java. Кстати говоря, вы используете Jedis или какую-то другую библиотеку Java?

Tim Biegeleisen 05.03.2019 14:30

Сначала попробуйте создать новый объект Jedis с помощью вызова new Jedis("localhost", 6379, 10000). Поиграйте с ним и убедитесь, что он работает. Вы можете проверить консоль командной строки Redis, чтобы проверить все команды, которые вы пытаетесь выполнить. Затем попробуйте вызвать subscribe из кода Java в режиме отладки. Что просходит? Есть ли сообщения об ошибках?

Tim Biegeleisen 05.03.2019 14:37

1551793936.464448 [0 127.0.0.1:52434] "ПОДПИСАТЬСЯ" "тест"

Dr. Bright 05.03.2019 14:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
35
0

Другие вопросы по теме