2015-02-10 132 views
1

这里是我的简单的路由应用程序异步执行一些逻辑200 OK。喷雾路由

我对斯卡拉和喷雾相当陌生,想知道是否有任何spray way来解决这个具体问题。否则,我会为每个请求创建Actor并让它完成这项工作。请指教。

+0

这听起来像你想发送消息给演员或分拆未来,而不是等待它完成。 – Gangstead 2015-02-10 21:10:49

+0

如果不是太复杂,或者演员对于这项工作太冗长/矫枉过正,你可以将你的逻辑嵌入到“未来”中。 – ale64bit 2015-02-10 21:54:30

+0

没有喷雾特定的方式来做到这一点 - 喷雾是一个HTTP库,而不是厨房水槽框架。使用你通常使用的任何方法 - “未来”或“演员”或任务队列是非常好的方法。 – lmm 2015-02-10 22:19:32

回答

3

没有什么特别的方法可以处理这种喷雾:只需开启异步动作(一种方法返回Future,发送给演员的消息,无论如何)并立即致电complete

def doStuffAsync = Future { 
    // literally anything 
} 

path("meter"/JavaUUID) { meterUUID => 
    pathEnd { 
    post { 
     entity(as[Usage]) { usage => 
     doStuffAsync() 
     complete("OK") 
     } 
    } 
    } 
} 

相反,如果你需要等待一个异步操作以发送响应之前完成,则可以使用特定的喷雾指令与期货还是演员工作。