У меня циклический роутер akka 2.0. Теперь мне нужно разослать сообщение всем маршрутам и дождаться ответов от всех. Я еще не нашел способ сделать это. Сначала у меня был список актеров, которые я передал маршрутизатору, но теперь мне нужно загрузить их из своего application.conf. Есть ли способ дождаться всех сообщений трансляции? Было бы хорошо, если бы я мог получить количество маршрутов из файла conf.
Акка спросить Трансляция
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
Вы правы, но сейчас мне действительно нужны все ответы. Если один из них терпит неудачу, весь запрос терпит неудачу.
- person tgr; 22.05.2012
Основной алгоритм для этого показан в руководстве по адресу doc.akka.io/docs/akka/2.0.1/intro/ . Мастер-класс работает примерно так. Единственный недостающий бит — это тайм-аут для завершения всех операций. Но я предполагаю, что это будет необходимо только в том случае, если ваши актеры действительно распределены по нескольким JVM и/или системам.
- person Christian Schlichtherle; 22.05.2012
Чтобы реализовать тайм-аут для главного актера в этом руководстве, вы можете настроить планировщик (doc.akka.io/docs/akka/2.0.1/scala/scheduler.html) и отправьте специальное сообщение о тайм-ауте главному актеру.
- person Christian Schlichtherle; 22.05.2012
Я решил проблему с дактипированием и проверкой количества маршрутов. Так что я приму ваш ответ.
- person tgr; 30.07.2012