2011-08-03 2 views
2

두 명의 하위 프로세스를 모니터링하는 감독자 프로세스가 있습니다. 기본 프로세스 및 백업 프로세스 (기본 프로세스가 종료되는 경우)얼랑 감독관 - 공유 프로세스 사서함

메시지가 사서함에 남아있는 동안 주 프로세스가 다운되면 백업 프로세스가 인계 받아 원래의 주 프로세스 사서함에 남겨진 메시지를 처리 ​​할 수있는 방법이 있습니까?

+1

노드 또는 프로세스? 그것들은 Erlang 세계에서 두 가지 다른 개념입니다. –

답변

0

노드 대신 프로세스를 의미하고 모든 수신 메시지가 처리되는지 확인하려는 경우 기본 프로세스 또는 백업 프로세스 중 하나를 사용하여 들어오는 메시지를 Mnesia 테이블에 직접 저장하는 것이 가장 좋습니다. 이렇게하면 백업 프로세스에서 계속 처리 할 수 ​​있습니다.

그렇다면 문제는 OTP가 자동으로 처리 할 수 ​​있다고 생각합니다. 백업 프로세스를 생성 할 필요가 없습니다. 추락 한 경우 동일한 gen_server를 다시 스폰하도록 감독자에게 지시 할 수 있습니다.

+1

[관심있는 독자의 질문]. 이것은 프로세스의 사서함이 다시 생성되는 것을 의미합니까? 즉, 프로세스가 재발행 될 때 종료 전의 메일 박스에있는 모든 메시지가 계속 나타납니다. 고마워. – sfinnie

+0

아니요, 잃어 버렸기 때문에 ets 또는 Mnesia 테이블에 넣어야합니다. –

+0

아 - 그래. 그들이 살아남은다고 생각하지 않았고, 당신의 대답을 잘못 읽었습니다. 명확히하기위한 Thx. – sfinnie

0

내가 일반적으로 그런 상황에서 수행하는 것은 들어오는 메시지를 ets 테이블로 푸시하는 것입니다. 이것에 약간의 미묘가있다. 더 논의 된 here