[英]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 Threads
和play 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.