2011-12-22 10 views
5

私は、Redisのpubsubチャンネルの加入者として無限に聞くJedisクライアントを作成するというコンセプトに苦労しています。jedis 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) { 
      ... 
     } 
    } 

ありがとうございます。

答えて

6

ermmm、以下はすべて解決します。確かにそれはジェダイのものだった

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