在HTTP请求到特定URL之间等待三秒钟

时间:2014-08-20 02:13:22

标签: scala http akka spray

使用spray,我希望系统在它向特定URL发送两个HTTP请求之间等待几秒钟,因为我不想弄乱我的应用程序的服务器流量#39 ; s自动连接。你怎么做呢?我可以通过将命令放在需要暂停的每个地方来实现,但我认为它看起来并不酷,难以维护。如果它可以被抽象到ActorSystem的水平,我会很高兴。谢谢!

2 个答案:

答案 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"