1

我正在考虑将我的 Java NIO 实现转移到JBoss Netty,因为它提供的模型比我实现的要干净得多。该实现使用专有协议通过 TCP 管理许多客户端到组件的连接。

我在 Netty 中看不到的实现的一个方面是能够设置任意超时,其中:

  1. 等待从组件中读取一些数据。我知道 Netty 有一个ReadTimeoutHandler,但是当组件在状态机中移动时,它可以很容易地更改/关闭超时值吗?
  2. 等待时间过去,以便我可以重新连接到组件(以便在断开连接后给组件时间重新启动)。这与通信完全无关,是一个简单的超时,但是我希望以与其他与通信相关的超时相同的方式将超时“事件/异常”呈现给处理程序类。

这个超时机制可以用Netty来完成吗?

结论:鉴于我需要实现一个超时机制,该机制将在它自己的线程中运行,我毕竟不会转换为使用 Netty。

4

1 回答 1

3

请参阅ChannelConfig。方法setConnectTimeoutMillis(int)以毫秒为单位设置超时。您可以通过调用setOption(String, Object)通过Bootstrap实例调用此方法。将是“connectTimeoutMillis”,而将是所需的超时时间(以毫秒为单位)。namevalue

以下代码段显示了如何将连接超时设置为 5000 毫秒(5 秒)。

ClientBootstrap bootstrap... // bootstrap instance
bootstrap.setOption("connectTimeoutMillis", 5000);
于 2011-02-25T18:46:08.390 回答