2016-06-18 5 views
1

私はplay framework 2.5.3を使ってWebアプリケーションを開発するためにscalaにプログラミングしています。私は、プレイの非同期モデルを利用するTCPサーバ/クライアントを作成する必要があります。少し読んだ後。 Java 7でNIO.2'sAsynchronousServerSocketChannel/AsynchronousSocketChannelを学びました。ここではGithubのScala用のNIO.2実装(https://gist.github.com/happy4crazy/1901b1be0cb924898d13)が見つかりました。ScalaのプレイフレームワークとNIO.2

修正後、コードを実行してjvisualvmのスレッドを調べることができました。私はNIO.2が接続を受け入れるときにそれ自身のスレッドを作成していることに気付きました。私は、NIO.2's Threadsplay framework'sディスパッチャスレッドが問題を引き起こし、負荷が高いときにWebアプリケーションを遅らせてしまうのではないかと心配しています。これが問題につながる可能性がありますし、再生フレームワークの非同期モデルを使用するとintegrate NIO.2の方が良い方法がありますか? Playはのためネッティーを使用する場合

事前 フランシス

答えて

0

であなたに感謝I/O、ネッティーは独自のスレッドプールを持っており、それが(https://www.playframework.com/documentation/2.5.x/ThreadPools)の問題が発生することはありません。だから私はNIO.2が独自のスレッドプールを持っているという事実も考えられます。

一方、Playと同じスレッドプールを使用するようにNIO.2を設定できます。まず、Playのスレッドプールを抽出します。それをexecutorと命名しましょう。次に

AsynchronousChannelGroup group = AsynchronousChannelGroup.withThreadPool(executor); 
AsynchronousServerSocketChannel channel = AsynchronousServerSocketChannel.open(group); 
AsynchronousSocketChannel channel = AsynchronousSocketChannel.open(group); 
関連する問題