2011-12-22 1 views
5

나는 Redis pubsub 채널의 가입자로서 무한히 청취하고 그들이 들어올 때 메시지를 처리하는 Jedis-client를 만드는 개념에 어려움을 겪고 있습니다.jedis pubsub 및 시간 초과 : 구독자로 무제한으로 듣는 방법?

제 문제는 잠시 동안 사용하지 않으면 서버가 멈추는 것입니다 조용히 응답합니다. 나는 이것이 내가 가입하는 Jedis-client에서 발생하는 타임 아웃으로 인한 것이라고 생각한다.

실제로 그렇겠습니까? 그렇다면 특정 Jedis-client가 타임 아웃하지 않도록 설정하는 방법이 있습니까? (다른 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) { 
      ... 
     } 
    } 
: 웹 서버 시작시 실행

감사합니다.

답변

6

ermmm 아래에서 모두 해결됩니다. 실제로 그것은 Jedis 일이었습니다

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