2015-12-16 2 views
2

В иерархии актерских систем в documentation указано, что есть актер-опекун с адресом /user, и что актеры, созданные с использованием system.actorOf(), являются дочерними элементами этого актера.akka: запрос детей актера-опекуна

Можно ли запросить систему актеров, чтобы получить «текущие» дети опекуна-актера? И если да, то как это достигается?

+0

Какой рабочий процесс вас ведет? – Daenyth

+0

Я расширяю [это] (https://github.com/jrudolph/akka-http-scala-js-websocket-chat), позволяя клиенту создавать чат-комнату. Полезно (но не обязательно) знать детей актера-опекуна, чтобы я мог проверить, что была создана соответствующая чат-комната. – Mullefa

ответ

4

Вы можете использовать выбор актера подстановки и специальное сообщение Identify всем действующим лицам, которые соответствуют этому выбору. Для того, чтобы найти прямые детей актера /user сделать:

system.actorSelection("/user/*") ! Identify(None) 

Если вы хотите, чтобы найти всех детей в иерархии, вам придется вручную спускаться вниз по дереву, создавая детскую подстановочных actorSelection для каждого ActorRef получить ,

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