2012-04-20 40 views
0

我有一個.net類,它向一個控制器發出一個HTTP請求,但我的控制器必須等待請求,並在一段時間後,我不得不作出響應請求。我試圖用承諾,但無法弄清楚如何實現這一目標需要幫助解決這個...啓動延遲的HTTP響應與播放

在此先感謝

+0

Plz添加Play的版本。他們之間有很大的差異。 – 2012-04-20 09:27:18

+0

@ Zenklys對不起我的玩版本是2.0 – Karthik 2012-04-21 03:05:40

回答

1

等待通常不是最好的主意。在這種情況下你可能想要做的是創建一個Akka actor,它每隔一段時間就會被Scheduler平推。當它收到該ping消息時,它將檢查你正在查找的條件是否存在,並通知所有在該事件中註冊興趣的actor-ref。

當您通過詢問模式向akka演員發送消息時,該消息的發件人是支持Future的演員,一旦支持演員發送消息,演員就會完成演示。

Play 2.0有一個簡單的方法turning an Akka Future into a Play Promise。在那裏,你可以用Akka和Play進行異步編程!

因此,在總結,你的演員需要應對兩個消息: RegisterListener 平

RegisterListener是您發送郵件使用要求圖案的消息,演員將需要保留到聽者的發送者參考以便在條件滿足時通知它。

1

假設你想這樣做,在播放1.2.x版本,你可以使用await功能。例如,接收請求,等待30秒,然後作出反應,你會做

public static void delay30() { 
    await("30s"); 
    renderText("a-response"); 
} 

你可以使用任何的渲染方法,renderText僅僅是一個例子。

+0

感謝您的回覆,但這不適合我的情況,因爲我期待另一個事件觸發時,觸發我必須作出迴應此請求 – Karthik 2012-04-21 03:07:36

+0

然後只是等待一個承諾,或等待1秒,然後檢查事件,如果事件還沒有發生,則返回等待 – Codemwnci 2012-04-21 07:04:30

+0

如果您不介意,可否向我發送有關如何以非阻塞方式等待優惠的示例代碼? – Karthik 2012-09-29 05:33:02