Я использую AKKA Actors (версия 2.3.9) с использованием Scala API.Активатор запускается случайно
У меня есть группа гетерогенных актеров, которые нужно запускать каждые 30 минут. Я вижу, что за один проход не все актеры начинают срабатывать. Это совершенно случайно. Каждый актер не делает никаких тяжелых задач, так сказать. Они много читают в магазине NoSQL и несколько писем. Не знаете, в чем проблема. Я чувствую, что где-то я не использую идеальный подход.
Это код:
val system = ActorSystem("pumpkinx-akka")
import system.dispatcher
val noOfActors = 50
val allActors = List(
system.actorOf(Props[a.actors.TriggerActor].withRouter(new RoundRobinRouter(noOfActors)), "aTriggerActor"),
system.actorOf(Props[b.actors.TriggerActor].withRouter(new RoundRobinRouter(noOfActors)), "bTriggerActor"),
system.actorOf(Props[c.actors.TriggerActor].withRouter(new RoundRobinRouter(noOfActors)), "cTriggerActor"),
system.actorOf(Props[d.actors.TriggerActor].withRouter(new RoundRobinRouter(noOfActors)), "dTriggerActor"),
system.actorOf(Props[e.actors.TriggerActor].withRouter(new RoundRobinRouter(noOfActors)), "eTriggerActor"))
def trigger = allActors.foreach(_ ! new Start)
system.scheduler.schedule(0 seconds, 30 minutes)(trigger)
system.awaitTermination()
Не знаете, что именно вы ожидали, вы определили RoundRobinRouter, и это означает, что не все из них получают сообщение. – sap1ens
Мое ожидание: за один проход я должен был бы отправить сообщение «Старт» всем актерам a, b, c, d, e. Не нужно быть всеми 50 а. По крайней мере, один «актер» будет в порядке. Проблема, которую я вижу, заключается в том, что «e» актер вообще не срабатывает, также, как правило, «b» не срабатывает вообще. Это совершенно случайно и трудно наблюдать образец. – user1189332