跳到主要内容

【已解决】WARN io.netty.bootstrap.ServerBootstrap - Unknown channel option ''TCP_NODELAY

先看一段代码

public void start() {
ServerBootstrap serverBootstrap = new ServerBootstrap();

EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workGroup = new NioEventLoopGroup();

try {
serverBootstrap.group(workGroup, workGroup)
.option(ChannelOption.TCP_NODELAY, true)
.channel(NioServerSocketChannel.class)
.handler(new LoggingHandler(LogLevel.INFO))
.childHandler(new NFTInitHandler());
serverBootstrap.bind(port).sync();
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
bossGroup.shutdownGracefully();
workGroup.shutdownGracefully();
}
}

看上去好像没有任何问题,但是确实会导致这个警告,原因在于serverBootstrap.option(ChannelOption.TCP_NODELAY, true),在这一节代码中option主要是设置的ServerChannel的一些选项,而childOption主要是设置的ServerChannel的子Channel的选项。

所以参数ChannelOption.TCP_NODELAY ,是用来设置childOption的,这里进行添加没有任何作用。

option主要是针对boss线程组,child主要是针对worker线程组

正确来源:

https://issues.apache.org/jira/browse/OAK-6901 https://netty.io/4.0/api/io/netty/channel/ChannelConfig.html

image.png