Я борюсь с концепцией создания клиента Jedis, который бесконечно слушает как подписчик канала Redis pubsub и обрабатывает сообщения, когда они приходят.
Моя проблема в том, что через некоторое время бездействия сервер перестает отвечать молча. Я думаю, что это связано с тайм-аутом, происходящим в клиенте Jedis, на который я подписан.
Возможно ли, что это действительно так? Если да, то есть ли способ настроить этот конкретный Jedis-клиент так, чтобы он не отключался по тайм-ауту? (Хотя на другие джедиспулы не влияет какой-то глобально установленный тайм-аут) В качестве альтернативы, есть ли другой (лучший) способ того, чего я пытаюсь достичь?
Это мой код (измененный/убранный для отображения):
выполняется при запуске веб-сервера:
new Thread(AkkaStarter2.getSingleton()).start();
AkkaStarter2.java
private Jedis sub;
private AkkaListener akkaListener;
public static AkkaStarter2 getSingleton(){
if(singleton==null){
singleton = new AkkaStarter2();
}
return singleton;
}
private AkkaStarter2(){
sub = new Jedis(REDISHOST, REDISPORT);
akkaListener = new AkkaListener();
}
public void run() {
//blocking
sub.psubscribe(akkaListener, AKKAPREFIX + "*");
}
class AkkaListener extends JedisPubSub {
....
public void onPMessage(String pattern, String akkaChannel,String jsonSer) {
...
}
}
Спасибо.