0

我必须使用 netty 3.5.1 管理具有 > 1K 连接客户端的客户端服务器应用程序。有时,当我们通过重新启动服务器断开客户端连接时,写入数据库的更新会丢失。当执行重启/关闭时,我们像这样关闭我们的 Netty 组件:

  • 关闭服务器通道
  • 断开所有客户端(通过 ChannelGroupFuture)
  • 在我们的 ChannelPipeline 上调用 releaseExternalResources()
  • 在我们的 ExecutionHandler 上调用 releaseExternalResources() ,它是我们 ChannelPipeline 的一部分(是否需要手动调用它?)

但是我想知道为什么是 ExecutorUtil。terminate(由 ExecutionHandler 调用)对传递的 ExecutorService 执行 shutdownNow,因为shutdownNow耗尽队列中的所有现有任务并返回它们。这些任务不会被执行,因为 ExecutorUtil. terminatevoid类型。在 ExecutorService 上调用shutdown并等待完成不是更合适吗?

4

1 回答 1

0

这是一个很好的建议。你介意在我们的问题跟踪器上打开一个问题吗[1]

[1]https://github.com/netty/netty/issues

于 2012-09-08T11:23:54.100 回答