Czy znasz fajny sposób w Akka/Scala, aby dodać/usunąć routerów do routera Broadcaster?Dynamicznie dodawaj/usuwaj skierowane do routera aktor
Spoglądam na Resizer - ale nie spełnia on moich potrzeb (nie widzę jak jawnie poprosić resizer o zmianę rozmiaru (dodać trasy) i usunięcie go wydaje się, że musisz wysłać Truciznę do aktora który jest następnie usuwany).
Dotychczas Mam router z listą ActorRef i wysyłać wiadomości AddRoutee i RemoveRoutee ....
Moja sprawa biznesu: Mam aktora pobieranie danych z sieci (poprzez pełnomocnika) i musi wysłać te dane niezależnym podmiotom do równoległego przetwarzania. Ze względu na graficzną charakterystykę odbiorców (DAG) wykres może ewoluować w czasie wykonywania, modyfikując wierzchołki/krawędzie, dlatego też konieczne jest dodawanie i usuwanie tras. W tym celu musi istnieć czystszy sposób.
Dzięki za wskazówki.
Przykład kodu Chciałbym Akka obsługiwać:
class MDActor extends Actor {
@volatile var routees = Set[ActorRef]()
def receive = {
case ar: AddRoutee => routees = routees + ar.actorRef
case rr: RemoveRoutee => routees = routees - rr.actorRef
case msg => routees.foreach(r => r forward msg)
}
}
Czy możesz podać trochę więcej kontekstu w sytuacji, w której wystąpi kod, które powodują dodawanie/usuwanie tras z routera? Tego rodzaju informacje pomogą w znalezieniu rozwiązań. – cmbaxter
W twoim przykładzie polecam użycie Set [ActorRef] zamiast listy [ActorRef], aby zapobiec powielaniu pracy. I użyj "naprzód" zamiast "!" aby zachować oryginalnego nadawcę. –
Dzięki. To świetny pomysł. – jts