2011-11-15 15 views

Respuesta

16

UntypedActor es simplemente el nombre de actor, sino como la API de Java.

Estoy muy sorprendido de que la documentación no es suficiente:

Java:

Scala:

La diferencia es que TypedActors tienen una interfaz estática, y las invocaciones de los métodos en que la interfaz se transforma en mensaje envía. UntypedActors puede recibir cualquier mensaje.

Espero que ayude.

Saludos, √

+0

¿Por qué las personas generalmente prefieren usar un actor sin tipo sobre los que están tipeados? Los de tipo mecanografiado parecen hacer que el código sea más legible, menos "instancia de"/"caso" involucrado. Más orientado a objetos como. Más tipeados como los lenguajes Java y scala. – ses

+0

Mi opinión: al utilizar un actor sin tipo, debe filtrar los mensajes del actor. Al usar un actor mecanografiado, tienes que empatar solo para mensajes exactos. – alerya

+0

los actores mecanografiados inducen alto acoplamiento y no permiten convertirse/no ser bienvenidos (que es una forma original y puramente funcional de trabajar con actores internos del estado), más información - http://letitcrash.com/post/19074284309/when-to -use-typedactors – dk14

4
Actors (Untyped) 

Para que los actores (Scala) reciban mensajes, deben mezclarlos en el rasgo del consumidor. Por ejemplo, la siguiente clase de actor (Consumer1) implementa el método endpointUri, que se declara en el rasgo del consumidor, para recibir mensajes del punto final del archivo: data/input/actor Camel. Los actores sin cuota (Java) necesitan extender la clase abstracta UntypedConsumerActor e implementar los métodos getEndpointUri() y onReceive (Object).

Actors (Typed) 

Los actores tipificados también pueden recibir mensajes de puntos finales de Camel. A diferencia de los actores (sin tipo), que solo implementan un único método de recepción o de recepción, un actor mecanografiado puede definir varios métodos (procesamiento de mensajes), cada uno de los cuales puede recibir mensajes de un punto final de Camel diferente. Para que un método de actor tipeado esté expuesto como extremo de Camel, debe anotarse con la anotación @consume. Por ejemplo, el siguiente actor de consumo tipeado define dos métodos, foo y bar.

Reference

+0

Mithun, la parte de actores que necesitan mixin el rasgo del consumidor con el fin de recibir mensajes es de aproximadamente * * Camel mensajes, ¿verdad? Cualquier Akka Actor puede, por supuesto, recibir mensajes Akka ordinarios, con o sin Consumidor. – AmigoNico

+0

@AmigoNico: ¡¡Correcto !! –

1

actores sin tipo responden a los mensajes enviados, mientras que los actores mecanografiadas responden a llamadas de método (los valores de los parámetros son los mensajes).

Typed Actor Model se utiliza para definir contratos estrictos para los actores que solo pueden responder al conjunto de mensajes predefinidos. En este caso, no es necesario encapsular cada mensaje como un objeto; los actores mecanografiados nos permiten definir métodos separados que aceptan entradas múltiples como se define en el contrato. En lenguaje de Java, los actores mecanografiados proporcionan la interfaz de Java en el mundo orientado a objetos. [1]

[1] Akka Essentials

0

Akka actores sin tipo "no componer" y "no se escriben de forma útil".

Esto anula la razón por la que utilizamos Scala: es la potencia de programación funcional. Ver http://noelwelsh.com/programming/2013/03/04/why-i-dont-like-akka-actors/ para profundizar en esta forma de pensar.

Además, vea los intentos de mejorar esto en Scala para que coincida con el modo Haskell.

http://letitcrash.com/post/40198993865/makkros-first-step-towards-typed-channels http://letitcrash.com/post/45188487245/the-second-step-akka-typed-channels

parece seguir siendo experimental en Akka o incluso disminuido - no está claro.

Esta idea de canales tipados tiene mucho sentido porque se producen problemas similares cuando se trata de compilar tuberías de datos verificados (analíticos).

Akka con tipo parece que hay una gran evolución a un modelo de programación más seguro: https://opencredo.com/akka-typed/

Cuestiones relacionadas