2011-11-15 3 views

Répondre

16

UntypedActor est tout simplement le nom pour acteur, mais comme l'API Java.

Je suis très surpris que la documentation ne suffit pas:

Java:

Scala:

La différence est que TypedActors ont une interface statique, et les invocations de méthodes sur cette interface est transformé en un message envoie. UntypedActors peut recevoir n'importe quel message.

Espérons que ça aide.

Cheers, √

+0

Pourquoi les gens préfèrent-ils généralement utiliser un acteur non typé plutôt que typé? Les caractères typés semblent rendre le code plus lisible - moins 'instanceof'/'cas' - impliqués. Plus orienté objet comme. Plus typé comme Java et les langages scala sont. – ses

+0

Mon avis: en utilisant un acteur non typé, vous devez filtrer les messages par acteur. En utilisant l'acteur typé, vous devez lier pour le message exact seulement. – alerya

+0

les acteurs typés induisent un couplage élevé et ils ne permettent pas de devenir/unbecome (ce qui est original et pure manière fonctionnelle de travailler avec l'état à l'intérieur des acteurs), plus d'infos - http://letitcrash.com/post/19074284309/when-to -use-typedactors – dk14

4
Actors (Untyped) 

Pour que les acteurs (Scala) reçoivent des messages, ils doivent se mélanger au trait de consommateur. Par exemple, la classe d'acteur suivante (Consumer1) implémente la méthode endpointUri, qui est déclarée dans le trait Consumer, afin de recevoir des messages du fichier: data/input/actor Camel endpoint. Les acteurs non typés (Java) doivent étendre la classe abstraite UntypedConsumerActor et implémenter les méthodes getEndpointUri() et onReceive (Object).

Actors (Typed) 

Les acteurs typés peuvent également recevoir des messages des points de terminaison Camel. Contrairement aux acteurs (non typés), qui n'implémentent qu'une seule méthode receive ou onReceive, un acteur typé peut définir plusieurs méthodes (traitement de message), chacune pouvant recevoir des messages d'un point de terminaison Camel différent. Pour qu'une méthode d'acteur typé soit exposée en tant que point de terminaison Camel, elle doit être annotée avec l'annotation @consume. Par exemple, l'acteur consommateur typé suivant définit deux méthodes, foo et bar.

Reference

+0

Mithun, la partie sur les acteurs qui ont besoin de mixin trait à la consommation afin de recevoir des messages est d'environ * messages Camel *, non? Tout Acteur Akka peut bien sûr recevoir des messages Akka ordinaires, avec ou sans Consommateur. – AmigoNico

+0

@AmigoNico: Droit !! –

1

acteurs répondent aux messages typés envoyés, alors que les acteurs dactylographiés répondent aux appels de méthode (les valeurs des paramètres sont les messages). Le modèle d'acteur typé est utilisé pour définir des contrats stricts pour les acteurs qui ne peuvent répondre qu'à l'ensemble de messages prédéfini. Dans ce cas, chaque message n'a pas besoin d'être encapsulé comme un seul objet; Les acteurs typés nous permettent de définir des méthodes distinctes acceptant plusieurs entrées telles que définies par le contrat. Dans le langage java, les acteurs typés fournissent l'interface Java dans le monde orienté objet. [1]

[1] Akka Essentials

0

acteurs Akka typées "ne compose pas" et "ne sont pas utilement tapé".Cela va à l'encontre de la raison pour laquelle nous utilisons Scala: c'est la puissance de programmation fonctionnelle. Voir http://noelwelsh.com/programming/2013/03/04/why-i-dont-like-akka-actors/ pour approfondir dans cet état d'esprit.

Également, consultez les tentatives pour améliorer cela dans Scala pour correspondre à la façon Haskell.

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

semble être encore au stade expérimental dans Akka ou même tombé - pas clair.

Cette idée de canaux typés est très logique car des problèmes similaires se produisent lorsque l'on essaie de construire des pipelines de données vérifiées (analytiques).

Akka dactylographié semble être une grande évolution vers un modèle de programmation plus sûr: https://opencredo.com/akka-typed/

Questions connexes