4
我收到有關如何播放2架構的混合信息。它在網站上說,它建立在阿卡上,這很可能意味着它在每個連接上使用一個演員?它還表示不要編寫阻止代碼,因爲它阻止其他事件在不同連接中觸發(類似於它如何阻止node.js中的事件循環)。那怎麼可能,因爲阻止1個actor中的代碼不會阻塞另一個actor中的代碼?這不就是使用actor與node.js之類的回調嗎?每個連接在播放框架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)
}
}
的方法告訴()發送該消息,並且不等待響應。