Netty - 使用相同的channelFactory导致只处理3个响应

时间:2012-11-02 17:21:53

标签: httpclient netty nio channelfactory

我被指派创建一个基于Netty的HTTP客户端,但我遇到了一些困难,我希望能给我一个答案。

好吧,为了充分利用NIO,我想使用相同的channelFactory,这意味着所有连接都由同一个boss线程处理并分配给同一个工作线程池。

我遇到的问题是,如果我使用3名工人,我只会进行3次操作,然后这个过程就会被卡住。即使我在处理响应后关闭了通道,似乎工作线程也没有被释放用于下一个任务...

以下是我如何定义我稍后为引导程序分配的静态channelFactory:

static NioClientSocketChannelFactory channelFactory =  new NioClientSocketChannelFactory(
          Executors.newFixedThreadPool(1),
          Executors.newFixedThreadPool(3));

1 个答案:

答案 0 :(得分:1)

找到原因 - 我应该使用newCachedThreadPool并使用包含#Workers的第二个构造函数构建channelFactory。

netty需要一个cachedPool,否则它无法重用WI