Ich habe versucht, einen Router mit einem ConsistentHashingPool
zu verwenden, um Akteure zu erstellen, um Nachrichten auf der Grundlage einer Objekt-ID zu konsumieren, die in diesem einfachen Fall eine eindeutige Zeichenfolge ist.Erstellen von Akteur pro Domain-Objekt
Ich möchte einen Akteur pro Domain-Aggregat und das schien wie eine wirklich einfache Art, es zu tun.
Aber das Hashing scheint seltsame Dinge zu tun und Nachrichten an Akteure zu senden, die bereits aus einem anderen Hash-Mapping-Wert hervorgegangen sind.
ActorSystem.ActorOf(
Props.Create(() => new MyAggergateActor()).WithRouter(
new ConsistentHashingPool(10)
.WithHashMapping(o => (o as MyEvent)?.MyAggregateUniqueId ?? string.Empty)
.WithResizer(new DefaultResizer(1, int.MaxValue))),
"myAggregateRouter");
Auch Werte aus den nrOfInstances
scheint zwicken auch Dinge zu brechen, vielleicht die Hash Sinn funktioniert nur über den Satz von Anfang Instanzen und keine neuen Akteure hervorgebracht werden? Ich dachte der Resizer sollte mir hier helfen?
Bitte verzeihen Sie jede Naivität, ich habe gerade erst mit Akka begonnen.
Ich denke, akka.cluster und sharding ist total übertrieben für meine Anwendung. Ebenfalls. Ich denke jedoch, dass ich versucht habe, clever zu sein, indem ich einen runden Pflock für ein quadratisches Loch verwende. Jetzt verstehe ich die Router ein bisschen besser (danke für deine Antwort) Ich erkenne den Fehler meiner Wege. Verwenden Sie jetzt nur einen Akteur, um die Instanzen zu verwalten und Nachrichten an die richtige Instanz weiterzuleiten. – tigerswithguitars