在连接的ChannelFutureListener.operationComplete之前调用ChannelInboundHandler.channelRead

时间:2018-08-07 19:52:47

标签: netty

我有一个使用netty编写的客户端服务器应用程序,我最近注意到一个竞争状况,这是由于在连接的ChannelFutureListener.operationComplete之前调用了ChannelInboundHandler.channelRead。

我的理解是,当客户端接受连接时,必须先调用连接的channelFutureListener,然后再处理来自套接字的第一条消息。我想排序是通过在分配给负责从套接字读取数据的连接的同一I / O线程上执行connect的channelFutureListener来保证的。

但是我不确定为什么我看不到来自netty的保证顺序,而是两个事件要么同时执行,要么相反执行。

使用channelFutureListener的最佳实践是什么,有没有一种方法可以使用它确保在处理同一套接字的下一个事件之前执行?

1 个答案:

答案 0 :(得分:0)

您的理解是正确的...如果是这种情况,那是一个错误...请在netty错误跟踪器中打开一个包含所有详细信息的问题(复制者的信息真棒)。