2017-02-09 3 views
1

При перезапуске системы вызов context.children() возвращает ноль детям для определенного родителя. Перед перезагрузкой context.children() возвратил фактическое количество детей, которые родитель имел.Akka: Как получить детский актер при перезагрузке

Может кто-нибудь, пожалуйста, дайте мне знать, как мы можем получить детей ActorRef для родителя после перезапуска?

Мой случай использования:

Перед перезапуском, там скажем 5 детей одного из родителей. Теперь, я хочу рассчитать производительность и рассчитать производительность, мне нужно участие от всех этих 5 детей. Итак, после перезагрузки я могу просто отправить одно сообщение всем детям, после чего дети будут работать и отвечать родителям. Однако после перезагрузки я даже не знаю, кто такие дети. Итак, как лучше всего решить эти проблемы?

ответ

0

Один из способов - сделать родительский актер стойким, указывая свое состояние как список идентификаторов детей. Таким образом, когда система перезагружается и родитель воссоздается, он восстанавливает свое состояние.

0

Единственная проблема с отношением акторов «родитель-ребенок», где ребенок является постоянным игроком, заключается в том, что при перезапуске приложения, которое само по себе «родитель-ребенок» теряется. По сути, это отношение не является постоянным.

Так как flare упомянул, что вам необходимо также обеспечить постоянство вашего родительского актера и поддерживать имена всех детей. И затем во время перезагрузки ваш постоянный родительский актер должен вручную воссоздать все эти отношения «родитель-ребенок» на основе сохраненных идентификаторов (имен) через context.actorOf(...)

Смежные вопросы