2015-02-10 51 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") 
     } 
    } 
    } 
} 

相反,如果你需要等待一個異步操作以發送響應之前完成,則可以使用特定的噴霧指令與期貨還是演員工作。