使用spray,我希望系统在它向特定URL发送两个HTTP请求之间等待几秒钟,因为我不想弄乱我的应用程序的服务器流量#39 ; s自动连接。你怎么做呢?我可以通过将命令放在需要暂停的每个地方来实现,但我认为它看起来并不酷,难以维护。如果它可以被抽象到ActorSystem
的水平,我会很高兴。谢谢!
答案 0 :(得分:0)
我对Spray没有很好的经验,但是你可以做一个第三个虚假请求(在你的两个实际请求之间)和#34;几秒钟"超时期限? (或者可能是&#34的1/2;几秒钟和#34;允许请求重试加倍你等待的实际时间?)对不起,如果这是无益的或不正确的,就像我说我没有工作很多:/
答案 1 :(得分:0)
我建议使用TimerBasedThrottler来限制Actor收到的消息。以下是您需要的快速示例
// Actor that handles making the HTTP request
class MyRequestActor extends Actor {
def receive = {
case url => makeRequest(url)
}
}
// throttles to 1 message per second
val throttler = system.actorOf(Props(new TimerBasedThrottler(new Rate(1, (1.second))))
val requestActor = system.actorOf(Props(new MyRequestActor))
// register your actor with the throttler
throttler ! SetTarget(Option(requestActor))
// send messages to the request actor through the throttler
throttler ! "some/url"