Erlang Supervisor - почтовые ящики общего процесса - PullRequest
2 голосов
/ 03 августа 2011

У меня есть процесс супервизора, который контролирует два дочерних процесса;основной процесс и процесс резервного копирования (в случае выхода из основного процесса).

Если основной процесс не работает, хотя в его почтовом ящике все еще есть сообщения, есть ли способ для процесса резервного копирования перехватить и обработать сообщения, оставленные в исходном основном почтовом ящике процесса?

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

Что я обычно делаю в такой ситуации - это помещаю входящие сообщения в таблицу ets.В этом есть некоторые тонкости.Обсуждается далее здесь

0 голосов
/ 03 августа 2011

Если вы имеете в виду процессы вместо узлов, и вы хотите убедиться, что все входящие сообщения обрабатываются.Либо основным процессом, либо процессом резервного копирования лучше всего сохранять входящие сообщения непосредственно в таблице Mnesia.Таким образом, вы можете продолжить обработку в процессе резервного копирования.

Тем не менее, я думаю, что проблема, которую вы пытаетесь решить, может быть автоматически обработана OTP.Вам никогда не нужно создавать процессы резервного копирования.Вы можете просто сказать супервизору повторно порождать тот же самый gen_server, если один из них потерпел крах.

...