Akka pregunta Difusión

Tengo un enrutador akka 2.0 round-robin. Ahora necesito transmitir un mensaje a todos los enrutadores y esperar las respuestas de todos ellos. No encontré una manera de hacerlo todavía. Primero tenía una lista de actores que pasé al enrutador, pero ahora necesito cargarlos desde mi application.conf. ¿Hay alguna manera de esperar todos los mensajes de una transmisión? También estaría bien si pudiera obtener el número de rutas del archivo de configuración.

preguntado el 22 de mayo de 12 a las 09:05

Si yo fuera usted, miraría el ScatterGatherFirstCompletedRouter y crearía uno nuevo que haga ese ScatterGather y luego enviaría una solicitud de extracción y firmaría el CLA :-) -

Viktor, en ese caso, ¿cuál sería la semántica del mensaje de respuesta? simplemente iterable[ ] ? -

1 Respuestas

Si conoce la cantidad de enrutadores, normalmente solo contaría la cantidad de respuestas recibidas. Sin embargo, es posible que desee tener en cuenta un tiempo de espera, especialmente si sus actores se ejecutan distribuidos porque no hay garantía de que los mensajes realmente se entreguen.

contestado el 22 de mayo de 12 a las 10:05

Tienes razón, pero en este punto realmente necesito todas las respuestas. Si uno falla, toda la solicitud falla. - tgr

El algoritmo básico para hacer esto se muestra en el tutorial en doc.akka.io/docs/akka/2.0.1/intro/… . La clase magistral funciona casi exactamente de esta manera. El único bit que falta es un tiempo de espera para que se completen todas las operaciones. Pero supongo que esto solo sería necesario si sus actores están realmente distribuidos en varias JVM y/o sistemas. - Christian Schlichtherle

Para implementar el tiempo de espera para el actor maestro en este tutorial, puede configurar un programador (doc.akka.io/docs/akka/2.0.1/scala/scheduler.html) y envíe un mensaje de tiempo de espera personalizado al actor principal. - Christian Schlichtherle

Resolví el problema con la tipificación de patos y verifiqué la cantidad de rutas. Así que aceptaré tu respuesta. - tgr

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.