2015-02-03 2 views
1

jedis 풀에서 returnResources를 가져 오는 동안 오류가 발생했습니다. 코드는 다음과 같습니다.redis.clients.jedis.exceptions.JedisException : 풀에 리소스를 반환 할 수 없습니다.

Jedis publisherJedis = jedispool.getResource(); 
if(!redisPassword.equals("")) 
    publisherJedis.auth(redisPassword); 
publisherJedis.publish(channel,data); 
log.debug("Publisher jedis is connected: " + publisherJedis.isConnected()); 
log.debug("Jsondata is added into the queue " + data); 
try { 
    jedispool.returnResource(publisherJedis); 
    jedispool.destroy(); 
    publisherJedis.close(); 
} catch (Exception e) { 
    e.printStackTrace(); 
    log.error("Exception occured in returing resource " + e); 
} 

답변

2

는 내가 그 때 exception.Also 내가 레디 스 클라이언트를 사용하는 동안 우리는 더 조심해야한다고 지적했다 던지고 레디 스 클라이언트를 닫으려고 때 왜 내 응용 프로그램에서 다른 곳 레디 스 클라이언트를 종료했다. 우리가 redis 풀에서 자원을 얻으면 우리는 또한 그것을 사용하고 나서 연결을 끊어야 만합니다. 우리가 이것을하지 않으면 클라이언트가 재가동 될 것이고 maxSizeClient 한계를 만난 후에도 예외가 발생할 것입니다. 나는 start 메소드를 변경했습니다 게시자의

public void start(JedisPool jedispool, Jedis publisherJedis, String channel,String data, String redisPassword) 
{ 
    if(!redisPassword.equals("")) 
     publisherJedis.auth(redisPassword); 
    publisherJedis.publish(channel,data); 
    log.debug("Jsondata is added into the queue " +data); 
    try{ 
     publisherJedis.close(); 
     log.debug(" Is Jedis connected " +publisherJedis.isConnected()); 
     if(publisherJedis.isConnected()) 
      publisherJedis.disconnect(); 
     log.debug(" After disconnecting: is redis connected " +publisherJedis.isConnected()); 
    }catch(Exception e){ 
     log.debug("Error occured " +e); 
    } 
} 
관련 문제