【问题标题】:Scala/Akka: Run code after an actor doesn't receive a message for a given timeoutScala / Akka:在给定超时时间内演员未收到消息后运行代码
【发布时间】:2014-04-15 19:00:02
【问题描述】:

我有一个actor接收成束的消息——也就是说,它通常会快速连续地接收多条消息,然后是长时间不活动。我想在演员没有收到消息时执行代码,比如 250 毫秒。

为了澄清我的意思,在 Javascript 中,我可能会写一些这样的代码:

function gotMessage() {
  if(this.idleTimeout) {
    clearTimeout(this.idleTimeout);
  }

  this.idleTimeout = setTimeout(function() {
    //My code here
  }, 250);
}

如果该库中已有机制,我如何在 Scala 或 Akka 中实现该效果?

【问题讨论】:

    标签: scala akka


    【解决方案1】:

    该功能描述为here(Akka 演员文档页面,“接收超时”部分)。

    setReceiveTimeout 方法有文档here

    【讨论】:

    • 不错!我不知道这件事!感谢您的回答。
    • 虽然要注意 receiveTimeout 适用于所有消息。即说receiveTimeout = 100毫秒,演员向演员AB发送了一条消息。如果AB 中的任何一个回复<100 msec,将不会触发receiveTimeout。如果你想以每个演员为基础,即你想知道A 是否在 100 秒内没有回复,B 是否在 100 秒左右没有回复。然后,您需要编写自己的代码来执行此操作。这是@Ben 你想要的吗?
    猜你喜欢
    • 2013-11-29
    • 2014-12-17
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多