老师:
netty应用于客户端,一般模板型的代码是创建一个NioEventLoopGroup对象即可,这个对象中默认线程数量是cpu*2.
我的疑惑是,一般在客户端的实战中,是创建一个包含NioEventLoopGroup的client对象,然后使用里面的channel进行数据发送,还是创建多个client对象,然后使用多个Client中的各自的channel进行发送?
如果是多个Client对象,那么每个channel还需要使用一个NioEventLoopGroup线程池吗?使用一个单线程可不可以?
老师,一般实际开发客户端程序(假设发送量很大),最佳实践是哪种模式?
伪代码是:
class Client{
EventLoopGroup connectiontion = new NioEventLoopGroup();
private Channel channel ;
//创建client 并初始化channel
public Channel Client(){
Bootstrap bootstrap = new Bootstrap();
bootstrap.group(connectiontion);
bootstrap.channel(NioSocketChannel.class);
bootstrap.handler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
consumer.accept(socketChannel.pipeline());
}
});
ChannelFuture channelFuture = bootstrap.connect(serverIPAddress, port).sync();
this.channel = channelFuture.channel();
}
//关闭
public void closeClient(){connectiontion.shutdownGracefully();}
}