Sono in procinto di avviare un nuovo progetto (basato su Java). Devo costruirlo come un'architettura modulare, distribuita e resiliente.
Pertanto vorrei che i processi aziendali per comunicare tra loro, essere interoperabili, ma anche indipendenti.
Sto osservando in questo momento due quadri che, oltre alla loro differenza di età, esprimono 2 diversi punti di vista:
- Akka ( http://akka.io )
- Reattore ( https://github.com/reactor/reactor )
Cosa devo considerare quando scelgo uno dei framework di cui sopra?
Per quanto ho capito fino ad ora, Akka è ancora in qualche modo accoppiato (in un modo in cui devo "scegliere" l'attore a cui voglio inviare i messaggi), ma molto resiliente. Mentre Reactor è libero (poiché si basa sulla pubblicazione di eventi).
Qualcuno può aiutarmi a capire come prendere una decisione corretta?
AGGIORNARE
Dopo aver recensito meglio l' Event Bus di Akka, credo in qualche modo le caratteristiche espresse da Reactor siano già incluse in Akka.
Ad esempio l'abbonamento e la pubblicazione di eventi, documentati su https://github.com/reactor/reactor#events-selectors-and-consumers , possono essere espressi in Akka come segue:
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");
Pertanto ora mi sembra che le principali differenze tra i due siano:
- Akka, più maturo, legato a Typesafe
- Reactor, fase iniziale, destinato alla primavera
La mia interpretazione è corretta? Ma qual è concettualmente la differenza tra l'attore in Akka e il consumatore in Reactor ?