gpt4 book ai didi

scala - Akka Actor 中的 timers.startSingleTimer 和 scheduler.scheduleOnce 有什么区别?

转载 作者:行者123 更新时间:2023-12-05 00:46:18 26 4
gpt4 key购买 nike

我正在设计一个应该安排向自己发送消息的 Actor 。

我注意到至少有两种方法可以做到。

我想了解选择正确的区别。

第一个是akka.actor.Timers的一个方法:

def startSingleTimer(key: Any, msg: Any, timeout: FiniteDuration): Unit

第二种是actor上下文系统调度器比较常用的方式:
final def scheduleOnce(
delay: FiniteDuration,
receiver: ActorRef,
message: Any)(implicit executor: ExecutionContext,
sender: ActorRef = Actor.noSender): Cancellable

问题:
  • 在调度一个的情况下,它们之间的主要区别是
    给自己发消息?
  • 将 Actor 上下文传递给 scheduleOnce 是个好主意吗?方法?
  • 最佳答案

    akka.actor.Timers.startSingleTimer

  • 只能在 Actor 内使用
  • 只允许向自己安排消息,即不能向其他参与者安排消息
  • 如果actor死了,事件定时器会自动取消
  • 跟踪用户提供的事件计时器 key

  • context.system.scheduler.scheduleOnce
  • 可用于安排 Actor 内外的消息
  • 需要显式 ActorRefreceiver和可选 sender
  • 没有自动清理过程。所有这些都应该通过调用返回的 akka.actor.Cancellable 来明确处理。

  • 因此,如果您只需要为自己安排消息,请选择 akka.actor.Timers

    Is it a good idea to pass actor context to scheduleOnce method?



    不确定您想以何种方式执行此操作,但一般而言,actor 上下文必须仅在 receive 内使用方法并且没有传递到actor之外,也没有在 Futures 的回调方法中使用.

    关于scala - Akka Actor 中的 timers.startSingleTimer 和 scheduler.scheduleOnce 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54437419/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com