绝地发布和超时:如何作为订阅者无限收听



我正在努力创建一个绝地客户端,它作为Redis公共订阅通道的订阅者无限侦听,并在消息传入时处理消息。

我的问题是,经过一段时间的不活动,服务器停止无声地响应。我认为这是由于超时发生在我订阅的绝地武士客户端。

这可能真的是这样吗?如果是这样,是否有办法配置这个特定的jedi客户端不超时?(而其他jedispool不受一些全局设置超时的影响)或者,是否有另一种(最佳实践)方法来实现我想要实现的目标?

这是我的代码,(修改/剥离显示):

在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) {
          ...
        }
    }

谢谢。

嗯,下面解决了所有问题。这的确是绝地武士的把戏

private AkkaStarter2(){
  //0 specifying no timeout.. Overlooked this 100 times
  sub = new Jedis(REDISHOST, REDISPORT,0); 
  akkaListener = new AkkaListener();
}

相关内容

  • 没有找到相关文章