2015-10-15 3 views
0

Я использую netty channel pool для http-клиента и в реализации ChannelPoolHandlerchannelAcquired не вызывается при вызове channelPool.acquire(). Я использую netty 4.0.32.Final. Вот как я создал chanelpool. Я просто выполнил простой пример, указанный в netty.io. Если кто-то может просто объяснить, что я сделал неправильно, или если есть ошибка, которая будет очень полезна. Благодарю.Netty channelAcquired не получает вызов

EventLoopGroup group = new NioEventLoopGroup(); 
final Bootstrap b = new Bootstrap(); 
b.group(group).channel(NioSocketChannel.class); 
AbstractChannelPoolMap<InetSocketAddress, SimpleChannelPool> poolMap = new AbstractChannelPoolMap<InetSocketAddress, SimpleChannelPool>() { 
    @Override 
    protected SimpleChannelPool newPool(InetSocketAddress key) { 
     return new SimpleChannelPool(b.remoteAddress(key), new HttpClientPoolHandler()); 
    } 
}; 

final SimpleChannelPool simpleChannelPool = poolMap.get(new InetSocketAddress(uri.getHost(), uri.getPort())); 
final Future<Channel> acquire = simpleChannelPool.acquire(); 

acquire.addListener(new FutureListener<Channel>() { 
    public void operationComplete(Future<Channel> f) throws Exception { 
     if (f.isSuccess()) { 
      final Channel ch = f.getNow(); 
      // Send the HTTP request. 
      ChannelFuture channelFuture = ch.writeAndFlush(request); 
      channelFuture.addListener(new ChannelFutureListener() { 
       public void operationComplete(ChannelFuture channelFuture) throws Exception { 
        if (channelFuture.isSuccess()) { 
         simpleChannelPool.release(ch); 
        } else { 
        } 
       } 
      }); 
     } else { 
      System.out.println("ERROR : " + f.cause()); 
     } 
    } 
}); 
+0

Глядя на источник сети, я узнал, что метод 'channelAcquired' вызывается только тогда, когда в пуле есть ранее выпущенный канал. иначе новый канал создается без вызова метода channelAcquired. Так оно и должно быть? – Sudheera

ответ

1

channelAcquired метод будет вызываться только если вы «получить» ранее созданный канал. В вашем случае еще нет канала в пуле, поэтому он будет звонить channelCreated.

Смежные вопросы