2017-11-26 9 views
1

私は、リモートで実行される子アクターを持つ俳優があるとします。そして、子供の俳優のプロセスがStackOverflowExceptionのような回復不可能な例外で何らかの理由でクラッシュした、またはバグのためにクラッシュしたとします。プロセスがクラッシュした場合、akka.netはリモートノードをどのように再起動しますか?

この場合、akka.netの親ノードはクラッシュしたリモートの子をどのように再起動しますか?

答えて

1

これはできません。子供の俳優は特定の住所の下に住んでおり、そこで復活できなければ死んでしまいます。それに向けられたすべてのメッセージは、死んだ手紙に着地するでしょう。

これが当てはまらない場合は、常にAkka.Cluster.Shardingを使用できます。これは、アクターのライフサイクルを自動的に管理する上位レベルの抽象化です。

+0

このようなアクターを復活させる一般的な方法は何ですか? –

+0

私が見たことから、Akkaコミュニティは、将来のAPI([akka.typed](https://doc.akka.io/docs/akka/2.5.6/scala/typed。 html))はそのような機能を公開していません。現在、クラスタルータープールを使用する場合にのみ、リモート展開が必要です。あなたがして、あなたの俳優がステートフルである必要がある場合、Akka.Cluster.Shardingはおそらくあなたが望むものです。あなたの俳優が無国籍者になることができるならば、一人の俳優の死は本当に問題ではありません。 – Horusiath

+0

私の場合、私は外部周辺機器からデータを収集するいくつかの俳優を計画しています。唯一の問題は、ドライバが安定しておらず、頻繁にホスティングプロセスが失敗することです。これらのデバイスはステートレスです。しかし、私は明らかにホストプロセスを復活させ、クラッシュの場合にはこれらのデバイスを再び聴いていく必要があります。これらのクラッシュが私が同じマシン上で外部プロセスをホストすることを好む唯一の理由です。 –

関連する問題