我正在努力创建一个Jedis客户端的概念,该客户端可以作为Redis pubsub channel 的订阅者进行无限监听,并在消息进入时对其进行处理。
我的问题是,经过一段时间不事件后,服务器停止了静默响应。我认为这是由于我订阅的Jedis客户端发生超时。
确实可能是这样吗?如果是这样,是否有一种方法可以配置此特定Jedis客户端不超时? (尽管其他Jedispools不受某些全局设置的超时影响)
另外,是否有另一种(最佳做法)我要达到的目的?
这是我的代码,(已修改/删除以显示):
在网络服务器启动期间执行的: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) {
...
}
}
谢谢。
最佳答案
ermmm,以下内容可以解决所有问题。确实这是杰迪斯的事
private AkkaStarter2(){
//0 specifying no timeout.. Overlooked this 100 times
sub = new Jedis(REDISHOST, REDISPORT,0);
akkaListener = new AkkaListener();
}
关于timeout - jedis pubsub和超时: how to listen infinitely as subscriber?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8609491/