我希望有一个让演员暂时休眠的可能性。演员应该自己决定要睡多久。由于Thread.sleep()不是推荐的方法,所以我考虑使用akka中的调度程序。因此,我定义了一个演员,另一个演员可以注册以被唤醒。
class Scheduler extends Actor {
def receive = {
case Sleep(duration) => context.system.scheduler.scheduleOnce(duration) {
sender ! Ring
}
}
}
但是发送消息的Actor从未收到Ring消息。
- 在Actor内部使用调度器是否推荐?
- 为什么发送消息的Actor从未接收到Ring消息?
- 如果这不可行,解决该问题的推荐方法是什么?
become()
和unbecome()
似乎是一个不错的解决方案。谢谢。 - Felix Reckers