使用Play启动延迟的HTTP响应

时间:2012-04-20 03:20:23

标签: playframework-2.0

我有一个.net类,它向正在播放的控制器发出HTTP请求但我的控制器必须等待请求,并且在一段时间后我必须对请求做出响应。我尝试过使用Promise但是无法弄清楚如何实现这个需要帮助解决这个问题......

提前致谢

2 个答案:

答案 0 :(得分:1)

假设您想在Play 1.2.x中执行此操作,您将使用await函数。例如,要接收请求,等待30秒,然后回复,您将执行

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

您可以使用任何渲染方法,renderText只是一个示例。

答案 1 :(得分:1)

等待通常不是最好的主意。你可能想要在这个例子中做的是创建一个Akka actor,它经常被Scheduler ping。当它收到ping消息时,它会检查你正在寻找的条件是否存在,并且会通知所有注册对该事件感兴趣的actor-ref。

当您通过询问模式向akka演员发送消息时,该消息的发件人是支持Future的演员,一旦该演员发送消息就会实现该演员。

Play 2.0有一种简单的turning an Akka Future into a Play Promise方式。你有它,Akka和Play的异步编程!

总而言之,您的Actor需要对两条消息做出反应: RegisterListener 平

RegisterListener是您使用ask模式发送的消息,actor将需要保留对该侦听器的发送者的引用,以便在满足条件时通知它。