当调用clientBootstrap.connect(主机,端口)时,如果我在该通道建立通道之前有很多可以对该主机/端口发出的请求(即,如果我调用channel.write(message))在它连接之前,它是否可以预期:
1)Netty 4将在内部对此消息进行排队,并且我只是在连接后调用flush?我有这种期望,但不适合我,所以想确认一下。如果这是期望我可以分享一些代码。
OR
2)我是否需要自己跟踪连接状态并将这些消息排队,并且只有在我知道连接建立后才自己调用writeMessage()。
OR
3)其他策略?
提前谢谢。
答案 0 :(得分:1)
在连接之前无法调用write。如果这样做,ChannelFuture将因NotYetConnectedException而失败。
答案 1 :(得分:0)
根据我对代码的理解,行为与4.1.0.Beta5中的上述答案不同。 write方法不会检查通道现在是否处于活动状态,并且检查将移至flush方法。但是,在通道注册之前我们仍然无法写入,因为您的处理程序可能尚未添加到管道中。
我不知道为什么netty必须这样,也许netty可以在连接之前在build()方法中构建管道。因此用户可以使用netty的内部队列,而不需要创建另一个队列。