netty 何时连接到我的服务器?
when netty connects to my server?
我正在使用 Channle 池 API 代码写在这里:
ChannelPool
节 http://netty.io/news/2015/05/07/4-0-28-Final.html
EventLoopGroup group = new NioEventLoopGroup();
final Bootstrap cb = new Bootstrap();
InetSocketAddress addr1 = new InetSocketAddress("10.0.0.10", 8888);
InetSocketAddress addr2 = new InetSocketAddress("10.0.0.11", 8888);
cb.group(group).channel(NioSocketChannel.class);
ChannelPoolMap<InetSocketAddress, SimpleChannelPool> poolMap = new AbstractChannelPoolMap<InetSocketAddress, SimpleChannelPool>() {
@Override
protected SimpleChannelPool newPool(InetSocketAddress key) {
return new SimpleChannelPool(cb.remoteAddress(key), new TestChannelPoolHandler());
}
};
// depending on when you use addr1 or addr2 you will get different pools.
final SimpleChannelPool pool = poolMap.get(addr1);
Future<Channel> f = pool.acquire();
f.addListener(new FutureListener<Channel>() {
@Override
public void operationComplete(Future<Channel> f) {
if (f.isSuccess()) {
Channel ch = f.getNow();
// Do somethings
// ...
// ...
// Release back to pool
pool.release(ch);
}
}
});
我看到我们从未调用过 .connect
方法的代码,所以我的问题是当 netty 尝试将我的频道连接到服务器时?
当您使用 SimpleChannelPool 时,它会在您调用 acquire 时进行连接,并且 ChannelPool 中没有任何剩余。
我正在使用 Channle 池 API 代码写在这里:
ChannelPool
节 http://netty.io/news/2015/05/07/4-0-28-Final.html
EventLoopGroup group = new NioEventLoopGroup();
final Bootstrap cb = new Bootstrap();
InetSocketAddress addr1 = new InetSocketAddress("10.0.0.10", 8888);
InetSocketAddress addr2 = new InetSocketAddress("10.0.0.11", 8888);
cb.group(group).channel(NioSocketChannel.class);
ChannelPoolMap<InetSocketAddress, SimpleChannelPool> poolMap = new AbstractChannelPoolMap<InetSocketAddress, SimpleChannelPool>() {
@Override
protected SimpleChannelPool newPool(InetSocketAddress key) {
return new SimpleChannelPool(cb.remoteAddress(key), new TestChannelPoolHandler());
}
};
// depending on when you use addr1 or addr2 you will get different pools.
final SimpleChannelPool pool = poolMap.get(addr1);
Future<Channel> f = pool.acquire();
f.addListener(new FutureListener<Channel>() {
@Override
public void operationComplete(Future<Channel> f) {
if (f.isSuccess()) {
Channel ch = f.getNow();
// Do somethings
// ...
// ...
// Release back to pool
pool.release(ch);
}
}
});
我看到我们从未调用过 .connect
方法的代码,所以我的问题是当 netty 尝试将我的频道连接到服务器时?
当您使用 SimpleChannelPool 时,它会在您调用 acquire 时进行连接,并且 ChannelPool 中没有任何剩余。