繁体   English   中英

Scala播放框架和NIO.2

[英]Scala play framework and NIO.2

我正在用scala编程来使用play framework 2.5.3开发一个web应用程序,我需要创建一个TCP服务器/客户端,它将利用play的异步模型。 经过一番阅读。 我在Java 7中了解了NIO.2's AsynchronousServerSocketChannel/AsynchronousSocketChannel 。我在Github上找到了针对Scala的NIO.2实现( https://gist.github.com/happy4crazy/1901b1be0cb924898d13 )。

修改后,我能够运行代码并检查jvisualvm的线程。 我注意到NIO.2在接受连接时正在创建它自己的Thread。 我担心NIO.2's Threadsplay framework's调度程序线程会在高压力下导致问题并减慢Web应用程序的速度。 这会导致问题,是否有更好的方法integrate NIO.2与Play框架的异步模型integrate NIO.2

提前感谢弗朗西斯

当Play使用Netty进行I / O时,Netty有自己的线程池,它不会导致问题( https://www.playframework.com/documentation/2.5.x/ThreadPools )。 所以我可以假设NIO.2有自己的线程池是安全的。

同时,您可以将NIO.2配置为使用与Play相同的线程池。 首先,提取Play的线程池。 让它被命名为executor 然后

AsynchronousChannelGroup group = AsynchronousChannelGroup.withThreadPool(executor);
AsynchronousServerSocketChannel channel = AsynchronousServerSocketChannel.open(group);
AsynchronousSocketChannel channel = AsynchronousSocketChannel.open(group);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM