6
votes

Sélection de l'acteur

Pourquoi quand je sélectionne un chemin absolu avec ActorContext, il ne fonctionne pas (l'acteur n'est pas correctement sélectionné et ne reçoit pas le message HellOreSponse)? XXX

Je suis NEWBIE à Scala / Akka mais Documentation de lecture semble cela devrait fonctionner.


2 commentaires

Veuillez fournir les éléments suivants: 1) Code SCALA / AKKA 2) Code indique comment acteur1 est créé 3) Qu'entendez-vous par "ne fonctionne pas"? Compile-t-il? Est-ce que cela jette une exception au moment de l'exécution? Ne acteur1 reçoit pas le helloresponse ("Hello Back1") message? Que dit le message d'erreur?


J'ai ajouté une explication sur ce qui ne fonctionne pas, merci pour l'intérêt.


3 Réponses :


2
votes

Lorsque vous utilisez context.actorselection à l'intérieur d'un acteur, ce que vous dites est de trouver un acteur sous ce contrôle actuel des acteurs (démarré par / supervisé par). Étant donné que Acteur1 n'était probablement pas démarré par Actor2 (ou n'est pas supervisé par Acteur2), alors cela ne résoudra rien. Si Acteur1 était apparu / démarré par Actor2, vous pouvez probablement faire context.actorselection ("/ acteur1") pour obtenir cet enfant acteur d'Acteur2. La raison context.system.actorselection est parce que vous allez tout le chemin sur système avant de commencer votre recherche et de qualifier complètement le chemin de l'acteur. Système "possède" acteur1 si vous avez commencé comme system.actorof , il vous permettra d'utiliser ce chemin vous permettra d'y parvenir de système .

Un petit code Pour montrer ce que je veux dire: xxx

Lorsque vous exécutez cet exemple, vous verrez: xxx

afin que vous puissiez voir que j'ai 2 instances de acteur2 en cours d'exécution dans mon système; un engagé directement à partir de SYS lié ​​à / utilisateur / acteur2 en tant que chemin de recherche et on a démarré à partir d'une instance de acteur1 liée à / utilisateur / acteur1 / acteur2 pour son chemin.

Le système Acteur est hiérarchique et cet exemple montre que. Le actorsystem est la racine de tout. La sélection des acteurs est ensuite similaire à XPath en ce que le contexte que vous émettez le choix des choses.


0 commentaires

1
votes

à partir de acteur2 code> Vous devrez utiliser

context.actorFor("/user/actor1")


4 commentaires

Le premier extrait: context.actorselection ("/ acteur1") ne fonctionnera pas non plus. Si la barre oblique existe, Actorsélections résolvez-vous à partir du tuteur racine comme Roland mentionne.


Cela fonctionnait mais était un bug et a depuis été corrigé.


Il suffit de tester avec AKKA 2.3-M2 et context.actorsélections ("/ acteur1") ne fonctionne pas. L'Actorsélection commencera à résoudre le tuteur racine.


Il a été fixé en 2.1.4



4
votes