在SO上有一个题为"Good use case for Akka"的大量投票(尽管是“封闭式”)问题,我正在寻求进一步的解决方案。
虽然不是公认的答案,但Akka自己的Viktor Klang却加入heavily-upvoted answer,他声称RESTful Web服务是基于actor的框架的一个很好的用例。
但这似乎与Akka最基本的主要内容直接冲突:Akka用于异步系统,而REST服务需要同步,并且通常预计会在200ms内产生结果(例如,我不应该等待6秒钟让一个简单的GET向我返回一些JSON。)
所以我想问一下:如果Akka是隐式异步和非阻塞的话,Akka如何成为REST服务的理想选择,或者这只是自我营销炒作?
答案 0 :(得分:2)
为什么你认为异步意味着缓慢? :)
当然由于HTTP协议的性质,从客户端的角度来看HTTP调用将是同步的。但内部 Akka将使用其异步功能尽快处理请求。
spray.io是标准的Akka HTTP层,很快将被Akka HTTP模块替换(基本上是Spray 2.0)。它非常轻巧,超级快。
this是一个关于如何集成同步HTTP和异步Akka Actors的示例。正如您所看到的,它会创建Future并在完成后将结果发回。
更高级的示例:http://techblog.net-a-porter.com/2013/12/ask-tell-and-per-request-actors/