2012-07-01 9 views
7

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

+0

¿Qué problemas estás tratando de resolver? –

+2

@ViktorKlang Quiero estar seguro de que solo se envían los mensajes correctos a mis actores. –

+0

Es posible que desee comprobar http://stackoverflow.com/a/5551034/734191 donde Viktor da algunas explicaciones más (por ejemplo, 'convertirse'). – Hbf

Respuesta

5

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.

0

¿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.

+4

Sí, quiero tener comprobaciones de tiempo de compilación. –

+0

Mi pregunta no era si necesita verificaciones de tiempo de compilación, pero ¿por qué? – drexin

+7

porque quiero detectar errores lo antes posible –

1

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.

0

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

Cuestiones relacionadas