我正在设计一个演员,它应该安排发送消息给自己。
我注意到至少有两种方法可以做到这一点。
我想了解它们之间的区别,以选择正确的方法。
第一种方法是akka.actor.Timers的一种方法:
def startSingleTimer(key: Any, msg: Any, timeout: FiniteDuration): Unit
第二种方法是使用演员上下文系统的调度程序,这是一种相当常见的方式:
final def scheduleOnce(
delay: FiniteDuration,
receiver: ActorRef,
message: Any)(implicit executor: ExecutionContext,
sender: ActorRef = Actor.noSender): Cancellable
问题:
- 在将消息调度给自身方面,它们之间的主要区别是什么?
- 将演员上下文传递给
scheduleOnce
方法是个好主意吗?