JBoss Netty中灵活的超时机制?

时间:2011-02-25 16:53:54

标签: java nio netty

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

ClientBootstrap bootstrap... // bootstrap instance
bootstrap.setOption("connectTimeoutMillis", 5000);