Würdest du einen schönen Weg in Akka/Scala zum Hinzufügen/Entfernen von Routes zu einem Broadcaster-Router kennen?Dynamische Hinzufügen/Entfernen von Routes zu einem Router-Actor
Ich habe mir den Resizer angeschaut - aber nicht meine Bedürfnisse (ich kann nicht sehen, wie man den Resizer explizit dazu anfordert, die Größe zu ändern (routees hinzufügen) und zu entfernen scheint, dass man dem Akteur eine Giftpille schicken muss welches dann entfernt wird).
Bisher habe ich einen Router mit einer Liste von ActorRef und ich schicke AddRoutee und RemoveRoutee Nachrichten ....
Mein Business Case: Ich habe einen Schauspieler Daten aus dem Netz bekommen (über einen Proxy) und muss diese Daten an unabhängige Akteure zur parallelen Verarbeitung senden. Aufgrund der Diagrammnatur der Empfänger (DAG) kann sich der Graph zur Laufzeit entwickeln, Scheitelpunkte/Kanten werden modifiziert, daher müssen Routen hinzugefügt und entfernt werden
Es muss einen saubereren Weg geben, dies zu tun.
Danke für die Zeiger.
Beispiel für Code, den ich Akka zu handhaben möchte:
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)
}
}
Können Sie etwas mehr Kontext in die Situation (en) in Ihrem Code eingeben, die zum Hinzufügen/Entfernen von Routen vom Router führen? Diese Art von Informationen wird helfen, Lösungen zu finden. – cmbaxter
In Ihrem Beispiel würde ich Set [ActorRef] anstelle von List [ActorRef] empfehlen, um Routes Duplikation zu verhindern. Und benutze "vorwärts" statt "!" um den ursprünglichen Absender zu bewahren. –
Danke. Das ist eine großartige Idee. – jts