2016-09-15 13 views
0

(メッセージの参照が常に同じである)、のようなもの:Akkaでランダムなメッセージをスケジュールする方法は?私は、アッカのscheduler.scheduleランダムメッセージをスケジュールしようとしている

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

問題は「INT」参照が引っ掛かりことで、メッセージスケジューラセンドは常に同じ番号です。言い換えると、乱数は1回だけ生成されます。

私はそのための回避策を思いつくことはできません。どんな助け?

答えて

2

定期的に実行する関数をとるオーバーロードされたスケジュールメソッドを使用します。関数本体でメッセージ(乱数)を送信します。

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

こうnextIntは、メッセージがactor.So新しいランダムな番号に送信されるたびに生成されますと呼ばれます。

2

メッセージをランダムに送信するスケジュールを設定することはできますか?もしそうなら、あなたはできます:

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) 
+0

明らかにランダムな期間ではありません。 – pamu

関連する問題