Я в процесі запуску нового проекту (на базі Java). Мені потрібно побудувати його як модульну, розподілену та еластичну архітектуру.
Тому я хотів би, щоб бізнес-процеси спілкувались між собою, були сумісними, але й незалежними.
Зараз я розглядаю дві основи, які, крім різниці у віці, висловлюють 2 різні погляди:
- Акка ( http://akka.io )
- Реактор ( https://github.com/reactor/reactor )
Що я повинен врахувати, вибираючи одну з вищезазначених платформ?
Наскільки я розумію дотепер, Акка все ще якимось чином пов'язана (таким чином, що я повинен "вибрати" актора, якому хочу надіслати повідомлення), але дуже стійкий. Поки реактор вільний (як засновано на опублікуванні подій).
Хтось може допомогти мені зрозуміти, як прийняти правильне рішення?
ОНОВЛЕННЯ
Після кращого огляду шини подій Akka, я певним чином вважаю, що функції, висловлені Reactor , вже включені в Akka.
Наприклад, підписка та публікація подій, задокументована на https://github.com/reactor/reactor#events-selectors-and-consumers , можуть бути виражені в Akka таким чином:
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");
Тому мені зараз здається, що основні відмінності між ними:
- Акка, більш зріла, пов'язана з Typesafe
- Реактор, рання стадія, прив’язаний до весни
Чи правильне моє тлумачення? Але в чому концептуально різниця між актором в Акці та споживачем у реакторі ?