下面列出了怎么用io.netty.channel.pool.AbstractChannelPoolMap的API类实例代码及写法,或者点击链接到github查看源代码。
private BackClientPool() {
bootstrap
.group(group)
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 500)
.channel(NioSocketChannel.class)
.option(ChannelOption.TCP_NODELAY, true)
.option(ChannelOption.SO_KEEPALIVE, true);
poolMap = new AbstractChannelPoolMap<RequestHolder, SimpleChannelPool>() {
@Override
protected SimpleChannelPool newPool(RequestHolder requestHolder) {
return new FixedChannelPool(bootstrap.remoteAddress(requestHolder.getSocketAddress()), new BackPoolHandler(requestHolder), 50);
}
};
}
public static void main(String[] args) {
EventLoopGroup group = new NioEventLoopGroup();
final Bootstrap cb = new Bootstrap();
cb.group(group).channel(NioSocketChannel.class);
InetSocketAddress addr1 = new InetSocketAddress("10.0.0.10", 8888);
InetSocketAddress addr2 = new InetSocketAddress("10.0.0.11", 8888);
//连接池map
ChannelPoolMap<InetSocketAddress, SimpleChannelPool> poolMap = new AbstractChannelPoolMap<InetSocketAddress, SimpleChannelPool>() {
@Override
protected SimpleChannelPool newPool(InetSocketAddress key) {
return new SimpleChannelPool(cb.remoteAddress(key), new TestChannelPoolHandler());
}
};
final SimpleChannelPool pool1 = poolMap.get(addr1);//取出連接addr1地址的连接池
final SimpleChannelPool pool2 = poolMap.get(addr2);//取出連接addr2地址的连接池
Future<Channel> f1 = pool1.acquire();//获取一个连接
f1.addListener(new FutureListener<Channel>() {
@Override
public void operationComplete(Future<Channel> f) {
if (f.isSuccess()) {
Channel ch = f.getNow();
//连接地址1的某个channel
//使用连接发送消息
// ch.write(msg)
//用完释放
pool1.release(ch);
}
}
});
}