Netty:netty 中通道的进程生命周期是啥?
Posted
技术标签:
【中文标题】Netty:netty 中通道的进程生命周期是啥?【英文标题】:Netty: What is the process lifecycle of a channel in netty?Netty:netty 中通道的进程生命周期是什么? 【发布时间】:2019-01-02 04:35:29 【问题描述】:我最近在学习 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 生命周期的理解是错误的吗?有人可以帮我解释一下吗?
【问题讨论】:
【参考方案1】:您的代码基本上会在channelActive
中“阻塞”,这意味着EventLoop
将永远无法做任何其他事情。这是不允许的。
【讨论】:
谢谢!但是我还不知道channel中写消息的全过程,你知道全吗?比如客户端可能是connect->channelActive->channelRead ->readComplete(可能不正确)。就像这样。谢谢!以上是关于Netty:netty 中通道的进程生命周期是啥?的主要内容,如果未能解决你的问题,请参考以下文章