我正在努力创建一个Jedis-client的概念,该客户端作为Redis pubsub频道的订阅者无限地收听,并在邮件进入时处理它们。
我的问题是,在一段时间不活动后,服务器会以静默方式停止响应。我认为这是由于我订阅的Jedis客户端发生超时。
这可能确实如此吗?如果是这样,有没有办法配置这个特定的Jedis客户端不超时? (虽然其他Jedispools没有受到一些全局设置超时的影响) 或者,是否有另一种(最佳实践)方式来实现我想要实现的目标?
这是我的代码,(修改/剥离显示):
在Web服务器启动期间执行:
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) {
...
}
}
感谢。
答案 0 :(得分:6)
private AkkaStarter2(){
//0 specifying no timeout.. Overlooked this 100 times
sub = new Jedis(REDISHOST, REDISPORT,0);
akkaListener = new AkkaListener();
}