2017-11-26 3 views
1

Angenommen, ich habe einen Akteur mit einem untergeordneten Akteur, der remote ausgeführt wird. Und angenommen, dass der Prozess des untergeordneten Akteurs mit einer nicht behebbaren Ausnahme wie StackOverflowException aus irgendeinem Grund oder aufgrund eines Fehlers abgestürzt ist.Wie startet akka.net einen entfernten Knoten neu, wenn dieser Prozess abstürzt?

In diesem Fall, wie startet der Elternknoten in akka.net das abgestürzte Remote-Kind neu?

Antwort

1

Es wird nicht. Kindschauspieler lebt unter einer bestimmten Adresse, und wenn es dort nicht wiederbelebt werden kann, wird es tot bleiben. Alle Nachrichten, die an sie gerichtet sind, landen in toten Buchstaben.

Wenn dies für Sie nicht der Fall ist, können Sie immer Akka.Cluster.Sharding verwenden, eine Abstraktion auf höherer Ebene, die den Aktor-Lebenszyklus automatisch verwaltet.

+0

Was sind die üblichen Möglichkeiten, einen solchen Schauspieler wiederzubeleben? –

+0

Nach allem, was ich gesehen habe, fällt die Akka-Community langsam von der Remote-Bereitstellung ab - der zukünftigen API ([akka.typed] (https://doc.akka.io/docs/akka/2.5.6/scala/typed). html)) stellt diese Fähigkeit nicht einmal aus. Derzeit ist eine Remote-Bereitstellung nur erforderlich, wenn Sie Cluster-Router-Pools verwenden. Wenn du das tust, und deine Schauspieler müssen staatsfähig sein, ist Akka.Cluster.Sharding wahrscheinlich das, was du willst. Wenn Ihre Schauspieler staatenlos sein können, dann ist der Tod eines einzelnen Schauspielers nicht wirklich ein Problem, da jeder andere routee Schauspieler, der an einem Knoten lebt, seinen Job annehmen kann. – Horusiath

+0

In meinem Fall plane ich einige Akteure, die Daten von externen Peripheriegeräten sammeln. Das einzige Problem ist, dass die Treiber nicht stabil sind und häufig dazu führen, dass der Hosting-Prozess fehlschlägt. Diese Geräte sind zustandslos. Aber einige, wie ich ihren Hosting-Prozess offensichtlich wiederbeleben muss und diese Geräte im Falle eines Absturzes wieder zu hören. Und diese Abstürze sind der einzige Grund, warum ich externe Prozesse auf demselben Rechner hosten möchte. –

Verwandte Themen