【问题标题】:Is it necessary to close a Netty ChunkedInput?是否有必要关闭 Netty ChunkedInput?
【发布时间】:2018-08-23 01:00:58
【问题描述】:

如问题所述,是否需要在通过ChannelHandlerContext.writeAndFlush() 发送数据后关闭 Netty ChunkedInput?我知道这个操作是异步的,所以可能我不应该在调用writeAndFlush() 后立即关闭它,因此我需要添加一个FutureListener 来关闭它吗?

在官方File server的例子中,我发现ChunkedInputclose()函数没有被调用:

sendFileFuture = ctx.writeAndFlush(new HttpChunkedInput(new ChunkedFile(raf, 0, fileLength, 8192)), ctx.newProgressivePromise());

是说ChunkedInput在读取完所有数据后会自动关闭,还是通道真的帮我关闭了?

【问题讨论】:

    标签: java netty nio channel


    【解决方案1】:

    是的,您几乎不需要自己关闭ChunkedInput,因为您通常会在管道中有一个ChunkedWriteHandler,它会在写入最后一个块后为您关闭它。见code

    是不是表示ChunkedInput在读取完所有数据时会自动关闭

    有一个错误,在读取数据后关闭输入,但已修复为在写入最后一个块后关闭输入。见https://github.com/netty/netty/commit/fb52b8a3b2e3940a0bcf6e9167b157d59a811691

    在您引用的示例中,管道包含ChunkedWriteHandler,并且ChunkedFileChunkedFile 的实现)会自动关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-20
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2021-12-08
      • 2015-04-07
      • 2014-06-18
      相关资源
      最近更新 更多