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

在netty4中,连接到远程服务器后,通知之间的顺序是否有保证?,netty,Netty,当一个人调用channel.connect时,一个future将返回。然后,对于每个出站处理程序,.connect()被称为传递承诺。(我想它们实际上是同一个物体,但让我们忽略这一点。)目前为止很清楚 在某个时刻,听众被添加到(a)未来,到(b)承诺被通知完成。另外,在某个时候(c).channelActive()将在所有入站处理程序上被调用(据我所知,这将替换从netty-3.x连接的.connected)。最后还有一个时间点(d)isActive()第一次返回true 问题:在(a)到(d)

当一个人调用channel.connect时,一个future将返回。然后,对于每个出站处理程序,
.connect()
被称为传递承诺。(我想它们实际上是同一个物体,但让我们忽略这一点。)目前为止很清楚

在某个时刻,听众被添加到(a)未来,到(b)承诺被通知完成。另外,在某个时候(c)
.channelActive()
将在所有入站处理程序上被调用(据我所知,这将替换从netty-3.x连接的.connected)。最后还有一个时间点(d)
isActive()
第一次返回true

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


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

顺序是有保证的,但它可能会更早地触发事件,然后您可以添加侦听器本身,因为一切都是异步的。如果要确保在所有情况下都在channelActive()之前调用ChannelFutureListener,您只需通过channel.newPromise()创建ChannelPromise,向其添加ChannelListener,然后将ChannelPromise传递给connect方法


合同规定,ChannelPromise将始终在ChannelOutboundHandler/ChannelInboundHandler中的相应方法之前得到通知。顺序是有保证的,但它可能会触发一个事件,然后您可以添加侦听器本身,因为一切都是异步的。如果要确保在所有情况下都在channelActive()之前调用ChannelFutureListener,您只需通过channel.newPromise()创建ChannelPromise,向其添加ChannelListener,然后将ChannelPromise传递给connect方法


约定是,ChannelPromission将始终在ChannelOutboundHandler/ChannelInboundHandler中的相应方法之前得到通知,因此在调用channelActive处理程序之前会通知在outboundhandler.connect中传递的承诺。对吗?此外,在同一承诺/未来上,听众之间是否有保证的秩序?也就是说,如果我想确保在堆栈上的任何侦听器之前通知某些处理程序侦听器,我必须创建一个新的承诺(对于ctx.connect调用)并在之后通知处理程序作为参数接收的承诺。因此,在调用channelActive处理程序之前通知在outboundhandler.connect中传递的承诺。对吗?此外,在同一承诺/未来上,听众之间是否有保证的秩序?也就是说,如果我想确保在堆栈中的任何侦听器之前通知某些处理程序侦听器,我必须创建一个新的承诺(用于ctx.connect调用),并在之后通知处理程序作为参数接收的承诺。