Акка спросить Трансляция

У меня циклический роутер akka 2.0. Теперь мне нужно разослать сообщение всем маршрутам и дождаться ответов от всех. Я еще не нашел способ сделать это. Сначала у меня был список актеров, которые я передал маршрутизатору, но теперь мне нужно загрузить их из своего application.conf. Есть ли способ дождаться всех сообщений трансляции? Было бы хорошо, если бы я мог получить количество маршрутов из файла conf.


person tgr    schedule 22.05.2012    source источник
comment
На вашем месте я бы посмотрел на ScatterGatherFirstCompletedRouter и создал новый, который выполняет этот ScatterGather, а затем отправил запрос на включение и подписал CLA :-)   -  person Viktor Klang    schedule 22.05.2012
comment
Виктор, В таком случае, какова будет семантика ответного сообщения? просто Iterable[‹что отвечают отдельные акторы›]?   -  person questionersam    schedule 16.01.2013


Ответы (1)


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

person Christian Schlichtherle    schedule 22.05.2012
comment
Вы правы, но сейчас мне действительно нужны все ответы. Если один из них терпит неудачу, весь запрос терпит неудачу. - person tgr; 22.05.2012
comment
Основной алгоритм для этого показан в руководстве по адресу doc.akka.io/docs/akka/2.0.1/intro/ . Мастер-класс работает примерно так. Единственный недостающий бит — это тайм-аут для завершения всех операций. Но я предполагаю, что это будет необходимо только в том случае, если ваши актеры действительно распределены по нескольким JVM и/или системам. - person Christian Schlichtherle; 22.05.2012
comment
Чтобы реализовать тайм-аут для главного актера в этом руководстве, вы можете настроить планировщик (doc.akka.io/docs/akka/2.0.1/scala/scheduler.html) и отправьте специальное сообщение о тайм-ауте главному актеру. - person Christian Schlichtherle; 22.05.2012
comment
Я решил проблему с дактипированием и проверкой количества маршрутов. Так что я приму ваш ответ. - person tgr; 30.07.2012