Estoy en el proceso de iniciar un nuevo proyecto (basado en Java). Necesito construirlo como una arquitectura modular, distribuida y resistente.
Por eso me gustaría que los procesos de negocio se comunicaran entre sí, fueran interoperables, pero también independientes.
Estoy mirando ahora mismo dos marcos que, además de su diferencia de edad, expresan 2 puntos de vista diferentes:
- Akka ( http://akka.io )
- Reactor ( https://github.com/reactor/reactor )
¿Qué debo considerar al elegir uno de los marcos anteriores?
Por lo que tengo entendido hasta ahora, Akka todavía está acoplado de alguna manera (de una manera que tengo que 'elegir' al actor al que quiero enviar los mensajes), pero es muy resistente. Mientras Reactor está suelto (según se basa en la publicación de eventos).
¿Alguien puede ayudarme a entender cómo tomar una decisión adecuada?
ACTUALIZAR
Después de revisar mejor el Event Bus de Akka, creo que de alguna manera las características expresadas por Reactor ya están incluidas en Akka.
Por ejemplo, la suscripción y la publicación de eventos, documentada en https://github.com/reactor/reactor#events-selectors-and-consumers , se pueden expresar en Akka de la siguiente manera:
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");
Por lo tanto, ahora me parece que las principales diferencias entre los dos son:
- Akka, más madura, ligada a Typesafe
- Reactor, etapa inicial, destinado a Spring
¿Es correcta mi interpretación? Pero, ¿cuál es conceptualmente la diferencia entre el actor en Akka y el consumidor en Reactor ?