Asynchronous 处理netty异步写入和关闭

Asynchronous 处理netty异步写入和关闭,asynchronous,netty,channel,Asynchronous,Netty,Channel,我负责维护和改进一个已经开发好的SMTP代理大约一个月了 在研究该应用程序的其他方面时,我发现下面的链接指出通道写入不是同步的,后续关闭必须使用侦听器完成 问题: 这对Netty API的3.6.3版(最终版)有效吗 考虑到这是有效的,存储通道“写入”操作返回的ChannelFuture以供将来使用是否有任何问题 问题“2”的原因是: 我已经对应用程序的代码进行了初步分析,有很多地方有写操作、关闭操作和后续关闭操作(一个命令接一个命令) 考虑到Netty这方面的异步性质,我可以意识到,处理所有

我负责维护和改进一个已经开发好的SMTP代理大约一个月了

在研究该应用程序的其他方面时,我发现下面的链接指出通道写入不是同步的,后续关闭必须使用侦听器完成

问题:

  • 这对Netty API的3.6.3版(最终版)有效吗

  • 考虑到这是有效的,存储通道“写入”操作返回的
    ChannelFuture
    以供将来使用是否有任何问题

  • 问题“2”的原因是:

    我已经对应用程序的代码进行了初步分析,有很多地方有写操作、关闭操作和后续关闭操作(一个命令接一个命令)

    考虑到Netty这方面的异步性质,我可以意识到,处理所有操作的唯一方法是存储所有写入操作返回的
    ChannelFuture
    ,以便我可以使用它们来安排关闭操作

    基本上,我会用方法“write”和“close”创建一个助手,并持有一个
    映射。每次调用write时,我都会在这个映射上添加一条新记录,其中包括频道本身和频道“write”操作返回的
    ChannelFuture

    当调用“close”helper方法时,我首先尝试在这个映射上查找通道。如果找不到,则没有挂起的写入操作,因此我可以立即关闭通道。否则,我有一个挂起的写操作,所以我使用存储的
    ChannelFuture
    注册一个侦听器来安排频道的关闭