当一个人呼叫channel.connect
时,将返回一个未来。然后为每个出站处理程序.connect()
调用传递一个promise。 (我猜它们实际上是同一个对象,但让我们忽略它。)到目前为止这么清楚。
在某些时候,听众增加了(a)未来,(b)承诺通知完成。此外,在某些时候(c).channelActive()
将在所有入站处理程序上调用(据我所知,这取代了.netty-3.x)。最后,当isActive()
第一次返回true时,存在时间点(d)。
问题:(a)到(d)之间是否有明确的顺序?
上下文:我正在尝试实现一个在连接时将消息写入通道的处理程序。它工作得很好,但有时似乎处理程序不是第一个写。
答案 0 :(得分:1)
订单有保证,但它可能会提前触发事件,然后您可以添加侦听器本身,因为所有内容都是异步的。如果你想确保在channelActive()之前调用你的ChannelFutureListener,你可以通过channel.newPromise()创建一个ChannelPromise,然后将ChannelListener添加到它,然后将ChannelPromise传递给connect方法。
合同是ChannelPromise将始终在ChannelOutboundHandler / ChannelInboundHandler
中的相应方法之前得到通知