如何在 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)
我正在尝试使用 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)