2013-04-28 3 views
2

Je voudrais passer un acteur sérialisé avec son état à un autre acteur (afin qu'il puisse être migré à travers le réseau). Existe-t-il une API pour cela ou doit-on en créer une à partir de zéro?Est-ce que Akka prend en charge les acteurs d'ordre supérieur?

+0

La réponse courte est non, mais la réponse la plus longue est d'utiliser la communication à distance par @cmbaxter Vous ne pouvez pas réellement envoyer un acteur c'est déjà créé mais vous pouvez créer un nouvel acteur à distance avec tous ses paramètres (état). – sourcedelica

Répondre

2

Je crois que ce type de fonctionnalité est supporté par Remoting in Akka. Consultez ce lien, en particulier la section sur Déploiements à distance programmatique et voir si c'est ce que vous cherchez:

http://doc.akka.io/docs/akka/2.1.2/java/remoting.html

En outre, ActorRefs sérialisables, de sorte que vous pouvez passer certainement un ActorRef à un autre acteur sur une télécommande nœud, puis renvoyer un message à la référence que vous avez fournie, ce qui entraîne le retour du message au nœud de départ.

Encore une chose à laquelle penser. Vous ne pouvez pas passer une instance Actor à un autre acteur, tout ce que vous pouvez réellement passer est le ActorRef, qui est un handle léger pour rappeler à l'instance Actor que l'arbitre représente. Si vous voulez vraiment migrer une instance d'acteur et son état vers un autre nœud, lisez en plus dans la fonctionnalité de déploiement à distance programmatique. Si vous souhaitez simplement communiquer entre deux instances d'acteur s'exécutant dans des noeuds séparés, utilisez ask (?) pour obtenir le comportement demande/réponse (en utilisant le sender var dans l'acteur récepteur pour renvoyer à l'acteur appelant, ou passez l'envoi ActorRef (via context.self) le long de via tell (!) et ensuite utiliser cette référence dans l'acteur récepteur pour renvoyer un message

Questions connexes