2014-12-07 14 views
5

它在Spray site說:當HTTP不是時,Spray如何異步?

噴霧是用於在Scala和阿卡上構建REST/HTTP的基於集成層上的開放源代碼工具包。作爲異步,基於演員,快速,輕量級,模塊化和可測試,這是一個很好的方式來連接你的Scala應用程序的世界。

異步部分困惑我,因爲HTTP是一個同步協議。

你能解釋一下,當HTTP不是HTTP時,Spray是如何異步的?

回答

6

噴漆在罩下使用Akka以及Futures。它是異步的,即傳入請求被傳遞給Akka Actor,後者依次路由請求並最終生成響應。

在過分簡化的術語中,請求進入請求處理actor並異步傳遞給另一個可以處理路由的actor。請求處理參與者可以自由地處理額外的請求而不會阻塞來處理響應。路由參與者可以以同樣的方式交給特定的路由處理程序。完成響應的演員可以發送它。

參與者可以使用不同類型的dispatchers來定義它們如何與線程交互以處理消息,但本質上,其目標是編寫從未或很少阻塞的代碼,這正是Spray工作人員所做的。

+0

感謝您的解釋。 – 2014-12-08 08:10:34

+0

當然。我有一個稍微過時的,但Akka調度員在這裏更深入的解釋:http://stackoverflow.com/questions/9637031/understanding-the-different-dispatchers-in-akka-2/9642597#9642597希望它可以幫助... – jxstanford 2014-12-08 18:10:13