1

Java NIO 実装をJBoss Nettyに移行することを検討しています。JBoss Nettyは、私が実装したよりもはるかにクリーンなモデルを提供するからです。この実装では、独自のプロトコルを使用して、TCP 経由でコンポーネントへの多数のクライアント接続を管理します。

Netty では見られない私の実装の 1 つの側面は、任意のタイムアウトを設定する機能です。

  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 に答える