Netty 4 - 连接和排队消息的期望和策略是什么

时间:2014-01-07 15:03:00

标签: netty

当调用clientBootstrap.connect(主机,端口)时,如果我在该通道建立通道之前有很多可以对该主机/端口发出的请求(即,如果我调用channel.write(message))在它连接之前,它是否可以预期:

1)Netty 4将在内部对此消息进行排队,并且我只是在连接后调用flush?我有这种期望,但不适合我,所以想确认一下。如果这是期望我可以分享一些代码。

OR

2)我是否需要自己跟踪连接状态并将这些消息排队,并且只有在我知道连接建立后才自己调用writeMessage()。

OR

3)其他策略?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

在连接之前无法调用write。如果这样做,ChannelFuture将因NotYetConnectedException而失败。

答案 1 :(得分:0)

根据我对代码的理解,行为与4.1.0.Beta5中的上述答案不同。 write方法不会检查通道现在是否处于活动状态,并且检查将移至flush方法。但是,在通道注册之前我们仍然无法写入,因为您的处理程序可能尚未添加到管道中。

我不知道为什么netty必须这样,也许netty可以在连接之前在build()方法中构建管道。因此用户可以使用netty的内部队列,而不需要创建另一个队列。