Я использую последнюю стабильную версию 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");
Сначала попробуйте создать новый объект Jedis с помощью вызова new Jedis("localhost", 6379, 10000). Поиграйте с ним и убедитесь, что он работает. Вы можете проверить консоль командной строки Redis, чтобы проверить все команды, которые вы пытаетесь выполнить. Затем попробуйте вызвать subscribe из кода Java в режиме отладки. Что просходит? Есть ли сообщения об ошибках?
1551793936.464448 [0 127.0.0.1:52434] "ПОДПИСАТЬСЯ" "тест"




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