2017-02-09 2 views
1

시스템이 다시 시작되면 context.children() 호출은 특정 부모에 대해 0 개의 자식을 반환합니다. 다시 시작하기 전에 context.children()은 부모가 가진 자식의 실제 개수를 반환했습니다.Akka : 다시 시작할 때 어린이 액터를 얻는 방법

누군가가 나를 다시 시작한 후 부모를위한 children ActorRef를 어떻게 얻을 수 있는지 알려주십시오.

내 사용 사례는 다음과 같습니다

다시 시작하기 전에,이 할 수 있습니다

부모의 다섯 자녀를 말한다. 이제는 성과를 계산하고 성과를 계산하려면이 5 명의 자녀 모두가 참여해야합니다. 다시 시작한 후에, 나는 모든 아이들에게 똑같은 메시지를 보낼 수 있습니다. 그 후에 아이들은 부모에게 일하고 반응 할 것입니다. 그러나, 재시동 후에, 나는 아이들이 누구인지를 알지 못한다. 따라서 이러한 유형의 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

0

한 가지 방법은 부모 액터를 자식 ID 목록으로 상태를 유지하면서 영구적으로 만드는 것입니다. 이렇게하면 시스템이 다시 시작되고 부모가 다시 만들어지면 상태가 복원됩니다.

0

'parent-child'액터 릴레이션의 유일한 문제는 아이가 영속 액터 인 경우입니다. '부모 - 자식'관계 자체가 손실되는 애플리케이션을 다시 시작하면 문제가됩니다. 기본적으로이 관계 자체는 지속되지 않습니다.

따라서 flare으로 말하면 부모 액터를 영구 보존하고 모든 어린이의 이름을 유지해야합니다. 다시 시작하는 동안 영구 상위 액터는 저장된 ID (이름)를 기반으로 모든 부모 - 자식 관계를 수동으로 다시 만들어야합니다 (context.actorOf(...)

).