2

2 つの子プロセスを監視するスーパーバイザー プロセスがあります。プライマリ プロセスとバックアップ プロセス (プライマリ プロセスが終了した場合)。

メールボックスにメッセージが残っている間にプライマリ プロセスがダウンした場合、元のプライマリ プロセス メールボックスに残っていたメッセージをバックアップ プロセスが引き継いで処理する方法はありますか?

4

2 に答える 2

0

このような状況で私が通常行うことは、受信メッセージを ets テーブルにプッシュすることです。これにはいくつかの微妙な点があります。ここでさらに議論

于 2011-08-03T19:08:16.310 に答える
0

ノードではなくプロセスを意味し、すべての着信メッセージが処理されるようにしたい場合。プライマリ プロセスまたはバックアップ プロセスのいずれかによって、着信メッセージを直接 Mnesia テーブルに格納するのが最善です。そうすれば、バックアップ プロセスで処理を続行できます。

とはいえ、解決しようとしている問題はOTPによって自動的に処理できると思います。バックアップ プロセスを作成する必要はありません。スーパーバイザーに、クラッシュした場合に同じ gen_server を再生成するように指示するだけです。

于 2011-08-03T18:37:59.993 に答える