如何在 Akka 中安排随机消息? (消息引用始终相同)

How to schedule random messages in Akka? (Message reference is always the same)

我正在尝试使用 Akka scheduler.schedule 安排随机消息,例如:

  system.scheduler.schedule(1 second, 5 seconds, actorRef,
    scala.util.Random.nextInt(50))

问题是 "Int" 引用被捕获并且调度程序发送的消息总是相同的数字。也就是说,随机数只生成一次。

我想不出解决方法。有帮助吗?

使用重载调度方法,该方法采用函数定期执行。在函数体中发送消息(随机数)。

context.system.scheduler.schedule(1 second, 5 second) { actorRef ! Random.nextInt(10) }

这种方式 nextInt 将在每次消息发送到时调用 actor.So 将生成新的随机数。

您的问题是随机发送消息吗?如果是这样,您可以:

import system.dispatcher
def body: () => Unit = () => {
  logServiceRef ! MyMessage("some message")
  system.scheduler.scheduleOnce(FiniteDuration.apply(Random.nextInt(5),TimeUnit.SECONDS)) (body)
}
system.scheduler.scheduleOnce(0 second) (body)