一度に数時間 (おそらく > 24) さまざまなサーバーへの TCP 接続を維持 (または試行) する Scala アプリケーションがあります。各サーバーは、約 30 文字の短いメッセージを 1 秒間に約 2 回送信します。これらのメッセージは iteratee に送られ、そこで解析され、最終的にデータベースの状態が変更されます。
これらの接続のいずれかが何らかの理由で失敗した場合、別の方法で指定するまで、アプリは継続的に再接続を試みる必要があります。メッセージが失われるのは悪いことです。接続するサーバーや使用するプロトコルを制御できません。
一度に 300 もの接続があると考えられます。正確には高負荷のシナリオではないので、NIO は必要ないと思いますが、あるといいかもしれません。アプリの他のビットは高負荷です。
これらの接続を可能な限り確実に維持できる、ある種のソケットコントローラー/マネージャーを探しています。現在、独自のブロッキング コントローラーを実行していますが、ソケット コーディング (およびさまざまな設定、オプション、タイムアウトなどすべて) に慣れていないため、可能な限り最高の稼働時間を達成できるとは思えません。さらに、将来的には SSL サポートが必要になるかもしれません。
NIO は実際に利点を提供しますか?
ここではNettyが最良の選択でしょうか? Uptime の例をここで見たことがあり、単純に複製することを考えていましたが、下位レベルのネットワークに慣れていないため、より良いオプションがあるかどうかわかりませんでした。