Netty中的ReadTimeOutException在向客户端写入响应时没有关闭通道

时间:2013-05-23 01:33:29

标签: netty

我有一台Netty服务器。第一个处理程序是ReadTimeoutHandler,后跟业务逻辑处理程序和响应编写器处理程序。假设超时设置为20秒。只要有超时,我想在响应编写器处理程序exceptionCaught()中执行三项操作:

  1. 将回复写回客户

  2. 关闭我的业务逻辑开始的其他一些线程

  3. 关闭频道

  4. 最重要的问题是读取超时应该在正确的时间传达给客户。

    问题1

    如果我只做 3 ,客户端会在20秒后正确看到超时。但是,如果我同时执行 1 3 ,即尝试在关闭通道之前编写响应,则在业务逻辑线程完成后打印超时消息,这可能是需要40秒。我在哪里错了?

    channel.write(....).addListener(ChannelFutureListener.CLOSE)
    

    VS

    channel.close()
    

    问题2

    如果存在超时,如何强制终止业务逻辑线程,考虑到我没有在业务逻辑处理程序中捕获异常,而是在此之后的处理程序中。

0 个答案:

没有答案