2011-12-22 18 views
5

Onlar geldiklerinde bir Redis PubSub kanalına abone olarak sonsuz dinler ve iletilerini işleyen bir Jedi'ler-müşteri yaratma kavramı ile mücadele ediyorum.jedis pubsub ve zaman aşımları: sonsuz abone olarak nasıl dinlenir?

Benim sorun olduğunu sunucu durur hareketsizlik bir süre sonra sessizce cevap vermek. Bunun, Jedis-client ile abone olduğum bir zaman aşımından kaynaklandığını düşünüyorum.

Bu büyük olasılıkla böyle olabilir mi? Öyleyse, bu özel Jedis istemcisini zaman aşımına uğramayacak şekilde yapılandırmanın bir yolu var mı? (Diğer Jedispools küresel olarak ayarlanmış zaman aşımı ile etkilenmezken) Alternatif olarak, elde etmeye çalıştığım şeyin başka bir (en iyi uygulama) yolu var mı?

Bu

benim koddur (modifiye/ekran için elimden):

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) { 
      ... 
     } 
    } 
: web sunucu başlatılırken infaz

Teşekkürler.

cevap

6

ermmm, aşağıda her şeyi çözer. Gerçekten de bir Jedis olayı

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