Я пытаюсь начать с akka в scala.В основной ветке scala я хотел бы запустить актера akka, отправить ему одно сообщение и заблокировать, пока этот актер не завершится.Каков наилучший способ сделать это?
Например, у меня есть тестовый актер, который просто многократно отправляет сообщения себе:
class Incrementer() extends Actor {
val maxMessages = 5
var counter = 0
def receive() = {
case DoIncr() => {
if (counter < maxMessages) {
counter += 1
self ! DoIncr()
} else {
self.stop()
}
}
}
}
, и он вызывается через:
val inc = actorOf(new Incrementer()).start()
val result = inc !! DoIncr()
println(result) // this should block this thread, but it doesn't seem to.
// do other stuff
Этот блок занимает чуть болееВыполнение 5000 мс вместо ожидаемых нескольких мсек, так что, похоже, это связано с будущим таймаутом по умолчанию - и программа фактически не завершается.Все, что я на самом деле пытаюсь сделать, - это рассчитать время отправки x количества сообщений.Что здесь происходит?