每个连接在播放框架2中如何处理?
问题描述:
我收到有关如何播放2架构的混合信息。它在网站上说,它建立在阿卡上,这很可能意味着它在每个连接上使用一个演员?它还表示不要编写阻止代码,因为它阻止其他事件在不同连接中触发(类似于它如何阻止node.js中的事件循环)。那怎么可能,因为阻止1个actor中的代码不会阻塞另一个actor中的代码?这不就是使用actor与node.js之类的回调吗?每个连接在播放框架2中如何处理?
答
当他们说Play是建立在Akka之上的时候,他们指的是框架而不是网络服务器。连接由JBoss Netty(http://netty.io/)处理,它是嵌入式网络服务器。
连接可以是有界的(或不)到阿卡演员是提供一种异步响应如下所述:http://www.playframework.com/documentation/2.1.0/JavaAkka
参与者之间的通信是非阻塞因为他们发送消息(任何对象)和别等待回应(他们不会调用与不同演员交流的方法)。
的逻辑是类似:
//somewhere in the code
ActorB.tell(new Request(...));
-----------------------------------------
ActorB:
public void onReceive(Object msg) throws Exception {
if (msg instanceof Request) {
//process the request
ActorA.tell(new Response(...))
}
}
----------------------------------------------------------------
ActorA:
//ActorA is notified
public void onReceive(Object msg) throws Exception {
if (msg instanceof Response) {
System.out.println("Response: " + msg)
}
}
的方法告诉()发送该消息,并且不等待响应。