2016-09-15 58 views
0

我試圖安排與阿卡scheduler.schedule隨機的消息,是這樣的:如何在阿卡計劃隨機消息? (消息參考始終是相同的)

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

的問題是,「內部」引用被抓住和消息的調度發送始終是相同的號碼。換句話說,隨機數只生成一次。

我不能想出一個解決方法。任何幫助?

回答

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