Akka演员 - 等待一段时间来发送消息,否则发送消息

ade*_*rtc 8 scala actor akka

是否有可能Actor等待X秒数来接收任何消息,如果收到消息,则照常处理,否则向其他人发送消息Actor(在构造函数中预先确定)?

Tom*_*icz 18

有可能,看看Akka Actor"ask"和"Await"与TimeoutException.但请记住,阻止演员内部是一个非常糟糕的主意,因为在那段时间演员不能处理任何其他消息.此外,它阻止了一个Akka处理线程.

更好的方法是使用Akka调度程序发送消息(触发并忘记)并安排一些超时事件.当响应到达时,取消该事件或设置一些标志,以便在答复实际到达时不会触发.


Vik*_*ang 5

是的,如果你想等待任何消息,你只需设置一个receiveTimeouthttp : //doc.akka.io/docs/akka/current/scala/actors.html#receive-timeout

(这里的文档有点误导,您也可以在每条消息后设置 receiveTimeout)