public class étend Abonné UntypedActor {Akka: Abonné traitement des sujets multiples
public Subscriber() {
ActorRef mediator =
DistributedPubSub.get(getContext().system()).mediator();
// subscribe to the topic named "content"
mediator.tell(new DistributedPubSubMediator.Subscribe("content", getSelf()),
getSelf());
mediator.tell(new DistributedPubSubMediator.Subscribe("content_2", getSelf()),
getSelf());
}
public void onReceive(Object msg) {
if (msg instanceof String)
System.out.println("Message received: " + msg);
else if (msg instanceof DistributedPubSubMediator.SubscribeAck)
System.out.println("subscribing");
else
unhandled(msg);
}
}
Supposons maintenant que les deux sujets ont le même nom de la structure (par exemple foo.) Mais avec différents types. Dans ce cas, comment l'abonné va connaître le message "foo" a été reçu de quel sujet?
Merci, mais je n'ai pas reçu votre réponse complètement. Est-il possible pour un abonné de s'abonner à plus d'un sujet? – PhiberOptixz
Oh définitivement. Assez commun en fait. Crée simplement des moyens supplémentaires pour envoyer des messages à l'acteur. J'ai un très grand système basé sur les acteurs et certains des acteurs ont plusieurs abonnements qui s'abonnent à des messages produits par plusieurs sources. En fait, je suggérerais un sujet par acteur producteur et laisserais les consommateurs décider ce qu'ils veulent écouter. Assurez-vous simplement que si vous ne voulez pas gérer les messages, vous les consommez plutôt que de les envoyer à des lettres non pliées (donc mortes). –
Merci. Je suis nouveau à ce sujet. 1) Puis-je utiliser l'ActorRef comme nom de sujet ou son mauvais design? 2) Existe-t-il un moyen de savoir si un nom de sujet particulier est déjà utilisé dans l'ensemble du cluster? 3) Supposons (la question initiale que j'ai posée) que l'abonné s'abonne à 2 Sujets et suppose que les deux sujets publient le même type d'information/message/objet, maintenant comment l'abonné sait que le message est venu de quel sujet. – PhiberOptixz