Netty:在Netty中,渠道的流程生命周期是什么



我最近在学习Netty。我遇到了一个问题,我在ChannelInboundHandler.channelActive方法中放入了一个BlockingQueue。

针对这个问题,我想从BlockingQueue获得消息,然后将消息发送到通道,但事实是只有一条消息被发送到服务器。下面是代码:

@Override
public void channleActive(ChannelHandlerContext ctx) throws Exception{
String msg = null;
while(true){
msg=msgQueue.take();
ctx.writeAndFlush(Unpooled.copiedBuffer(msg, CharsetUtil.UTF_8));
}
}

但它不起作用,我只从channelRead()方法得到一个响应。我对netty生命周期的理解是错误的吗?有人能帮我解释一下吗?

您的代码将基本上"阻塞"在channelActive中,这意味着EventLoop将永远无法执行任何其他操作。这是不允许的。

最新更新