2 つの子プロセスを監視するスーパーバイザー プロセスがあります。プライマリ プロセスとバックアップ プロセス (プライマリ プロセスが終了した場合)。
メールボックスにメッセージが残っている間にプライマリ プロセスがダウンした場合、元のプライマリ プロセス メールボックスに残っていたメッセージをバックアップ プロセスが引き継いで処理する方法はありますか?
2 つの子プロセスを監視するスーパーバイザー プロセスがあります。プライマリ プロセスとバックアップ プロセス (プライマリ プロセスが終了した場合)。
メールボックスにメッセージが残っている間にプライマリ プロセスがダウンした場合、元のプライマリ プロセス メールボックスに残っていたメッセージをバックアップ プロセスが引き継いで処理する方法はありますか?
このような状況で私が通常行うことは、受信メッセージを ets テーブルにプッシュすることです。これにはいくつかの微妙な点があります。ここでさらに議論
ノードではなくプロセスを意味し、すべての着信メッセージが処理されるようにしたい場合。プライマリ プロセスまたはバックアップ プロセスのいずれかによって、着信メッセージを直接 Mnesia テーブルに格納するのが最善です。そうすれば、バックアップ プロセスで処理を続行できます。
とはいえ、解決しようとしている問題はOTPによって自動的に処理できると思います。バックアップ プロセスを作成する必要はありません。スーパーバイザーに、クラッシュした場合に同じ gen_server を再生成するように指示するだけです。