在netty4中,连接到远程服务器后通知之间是否有保证的顺序?

时间:2013-11-05 10:03:01

标签: netty

当一个人呼叫channel.connect时,将返回一个未来。然后为每个出站处理程序.connect()调用传递一个promise。 (我猜它们实际上是同一个对象,但让我们忽略它。)到目前为止这么清楚。

在某些时候,听众增加了(a)未来,(b)承诺通知完成。此外,在某些时候(c).channelActive()将在所有入站处理程序上调用(据我所知,这取代了.netty-3.x)。最后,当isActive()第一次返回true时,存在时间点(d)。

问题:(a)到(d)之间是否有明确的顺序?

上下文:我正在尝试实现一个在连接时将消息写入通道的处理程序。它工作得很好,但有时似乎处理程序不是第一个写。

1 个答案:

答案 0 :(得分:1)

订单有保证,但它可能会提前触发事件,然后您可以添加侦听器本身,因为所有内容都是异步的。如果你想确保在channelActive()之前调用你的ChannelFutureListener,你可以通过channel.newPromise()创建一个ChannelPromise,然后将ChannelListener添加到它,然后将ChannelPromise传递给connect方法。

合同是ChannelPromise将始终在ChannelOutboundHandler / ChannelInboundHandler

中的相应方法之前得到通知