Je suis en train de démarrer un nouveau projet (basé sur Java). J'ai besoin de le construire comme une architecture modulaire, distribuée et résiliente.
Je souhaite donc que les processus métier communiquent entre eux, soient interopérables, mais aussi indépendants.
Je regarde en ce moment deux cadres qui, outre leur différence d'âge, expriment 2 points de vue différents:
- Akka ( http://akka.io )
- Réacteur ( https://github.com/reactor/reactor )
Que dois-je considérer lors du choix de l'un des cadres ci-dessus?
Pour autant que je sache jusqu'à présent, Akka est toujours en quelque sorte couplé (d'une manière que je dois «choisir» l'acteur auquel je veux envoyer les messages), mais très résilient. Alors que Reactor est lâche (comme cela est basé sur la publication d'événements).
Quelqu'un peut-il m'aider à comprendre comment prendre une bonne décision?
METTRE À JOUR
Après avoir mieux examiné le bus d'événements d'Akka, je crois d'une certaine manière que les fonctionnalités exprimées par Reactor sont déjà incluses dans Akka.
Par exemple, l'abonnement et la publication d'événements, documentés sur https://github.com/reactor/reactor#events-selectors-and-consumers , peuvent être exprimés en Akka comme suit:
final ActorSystem system = ActorSystem.create("system");
final ActorRef actor = system.actorOf(new Props(
new UntypedActorFactory() {
@Override
public Actor create() throws Exception {
return new UntypedActor() {
final LoggingAdapter log = Logging.getLogger(
getContext().system(), this);
@Override
public void onReceive(Object message)
throws Exception {
if (message instanceof String)
log.info("Received String message: {}",
message);
else
unhandled(message);
}
};
}
}), "actor");
system.eventStream().subscribe(actor, String.class);
system.eventStream().publish("testing 1 2 3");
Par conséquent, il me semble maintenant que les principales différences entre les deux sont:
- Akka, plus mature, lié à Typesafe
- Réacteur, stade précoce, lié au printemps
Mon interprétation est-elle correcte? Mais quelle est conceptuellement la différence entre l'acteur d'Akka et le consommateur de Reactor ?