2015-12-11 111 views
1

有沒有辦法限制(或只是得到)在netty庫(版本4.x)的傳出連接的數量?如何限制Netty客戶端的傳出連接數量?

NioEventLoopGroup中有nThreads選項,它等於numberOfCpuCores * 2,但每個線程對於許多連接都使用Selector

P.S.這是如何提出請求的。

Bootstrap b = new Bootstrap(); 
b.group(eventLoopGroup) 
    .channel(NioSocketChannel.class) 
    .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000) 
    .handler(new MyHandler());  
ChannelFuture cf = b.connect(host, port); 
cf.addListener(new MyConnectionListener()); 
+0

也許[UniqueIpFilter](http://netty.io/4.1/api/io/netty/handler/ipfilter/UniqueIpFilter.html)可以提供幫助嗎? – swKK

回答

0

我認爲你需要實現你自己的ChannelOutboundHandler。使用Semaphore來控制連接號碼。當connect收購時和disconnect,closeexceptionCaught發佈。請注意避免反覆釋放以使Semaphore爲負數。

+0

tx,我會在本週嘗試一下 – AdamSkywalker

0

我認爲這與netty無關。您只需要一個頻道計數器,並在每次創建頻道時添加它。