Akka framework recomienda utilizar el actor mecanografiado solo para interactuar con código externo. Sin embargo, los actores estándar de akka están sin tipo. ¿Hay alguna forma mejor de crear actores tipo seguros? ¿Hay algún otro framework actor o tipo wrappers seguros alrededor de akka?Mensajes mecanografiados en akka
Respuesta
Si realmente quiere actores con tipeo estático, entonces también podría seguir adelante y usar actores tipeados a lo largo de su código. Esto se desaconseja fuertemente por un par de razones.
1.) Se corre el riesgo de que su sistema degenere en un grupo de RPC. El método de recepción de un actor hace que sea bastante obvio que todo se trata de pasar mensajes, y mucho menos si solo estás llamando a un actor mecanografiado.
2.) Un actor realmente no tiene un tipo. Mientras se está ejecutando, los mensajes que un actor puede procesar pueden cambiar dependiendo de en qué estado se encuentre, como lo que hace con esos mensajes. Esta es una excelente manera de modelar muchos protocolos, y los actores de Akka cuentan con soporte de primera clase con FSM.
Así que si realmente quieres hacerlo, eres libre de utilizar actores mecanografiados en todas partes y funcionará, pero realmente deberías pensar mucho sobre el problema que estás tratando de resolver antes de hacerlo.
¿Por qué es esto un problema para usted? akka.actor.Actor
tiene el método de recepción de tipo PartialFunction
que solo se llamará para los mensajes que puede manejar. ¿Por qué necesita cheques de tiempo de compilación? Pero para responder a su pregunta: una forma sería - para una API externa - construir un contenedor alrededor de su ActorRef
que luego envíe los mensajes al actor.
Sí, quiero tener comprobaciones de tiempo de compilación. –
Mi pregunta no era si necesita verificaciones de tiempo de compilación, pero ¿por qué? – drexin
porque quiero detectar errores lo antes posible –
Para verificar el tiempo de compilación ver SynapseGrid framework. Define un SystemBuilder que construye la topología de DataFlow. Mientras se construye, se garantiza que se verifiquen los tipos que pasan. Luego, el sistema resultante se convierte a RuntimeSystem con actores anidados y adecuadamente interconectados.
Las cosas van bastante rápido, pensé en darle una actualización 1. actores se escriben deprecated 2. En lugar de un nuevo concepto de Akka Typed está siendo devloped en el momemnt
Según entendí esto debería ser el solución definitiva a un sistema de actor tipado. Pero ya que este es al menos el tercer intento y planeado antes para Akka 2.4, este reclamo aún no se ha probado.
Yo personalmente no esperamos tener dos sistemas disponibles: la existente para los casos de uso más dinámicas, el nuevo para los más robustos
- 1. Lenguajes de metaprogramación mecanografiados
- 2. Secuencia de envío de mensajes en akka actors
- 3. Serialización en Scala/Akka
- 4. Distributed Acctors en Akka
- 5. Akka :: Uso de mensajes con diferentes prioridades sobre secuencia de eventos en ActorSystem
- 6. Bloqueo de IO en Akka
- 7. Descubrimiento de actores Akka en el clúster
- 8. cómo obtener el tamaño de la cola de mensajes de un actor de Akka?
- 9. Akka actorPara vs pasando un ActorRef
- 10. ¿Cómo funciona la E/S en Akka?
- 11. Remota Akka y Heroku
- 12. Akka para simulaciones
- 13. ¿Por qué mi distribución de actores se redujo en Akka?
- 14. Ejemplo de Akka EventBus para Java
- 15. En Akka, ¿qué sucede si veo() un ActorRef muerto?
- 16. Usar singletons en akka scala actor
- 17. Última respuesta de async io en Akka
- 18. ¿Qué es el "yo" en Akka?
- 19. Establecer el nivel de registro en Akka
- 20. Arquitectura de aplicaciones web basada en Akka
- 21. Trading de alta frecuencia en la JVM con Scala/Akka
- 22. ¿Cómo se espera que termine el sistema Akka actor?
- 23. ¿El método Akka onReceive se ejecuta al mismo tiempo?
- 24. Componer comportamiento rasgo en Scala en un Akka reciben método
- 25. application.conf para Scala SBT Akka Actors
- 26. Akka 2.1 agrupación opciones de diseño
- 27. Akka advertencia sobre "muchos casos" HashedWheelTimer
- 28. Comprobando si Akka actor remoto está disponible
- 29. Descubrimiento de servidor de actor remoto Akka
- 30. Archivos de IntelliJ, Akka y Configuración
¿Qué problemas estás tratando de resolver? –
@ViktorKlang Quiero estar seguro de que solo se envían los mensajes correctos a mis actores. –
Es posible que desee comprobar http://stackoverflow.com/a/5551034/734191 donde Viktor da algunas explicaciones más (por ejemplo, 'convertirse'). – Hbf