Yeni bir proje (java tabanlı) başlatma sürecindeyim. Bunu modüler, dağıtılmış ve esnek bir mimari olarak inşa etmem gerekiyor.
Bu nedenle iş süreçlerinin kendi aralarında iletişim kurmasını, birlikte çalışabilir ve aynı zamanda bağımsız olmasını istiyorum.
Şu anda yaş farklarının yanı sıra 2 farklı görüşü ifade eden iki çerçeveye bakıyorum:
- Akka ( http://akka.io )
- Reaktör ( https://github.com/reactor/reactor )
Yukarıdaki çerçevelerden birini seçerken nelere dikkat etmeliyim?
Şimdiye kadar anladığım kadarıyla, Akka hala bir şekilde bağlı (bir şekilde mesajları göndermek istediğim oyuncuyu 'seçmek' zorunda kalıyorum), ama çok dayanıklı. Reactor gevşek haldeyken (olay gönderimine göre olduğu gibi).
Birisi nasıl doğru bir karar vereceğimi anlamama yardımcı olabilir mi?
GÜNCELLEME
Akka'nın Etkinlik Otobüsünü daha iyi inceledikten sonra , bir şekilde Reactor tarafından ifade edilen özelliklerin zaten Akka'da yer aldığına inanıyorum .
Örneğin https://github.com/reactor/reactor#events-selectors-and-consumers adresinde belgelenen abonelik ve etkinlik yayını Akka'da şu şekilde ifade edilebilir:
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");
Bu nedenle, şimdi bana öyle geliyor ki ikisi arasındaki temel farklar:
- Akka, daha olgun, Typesafe'ye bağlı
- Reaktör, erken aşama, bahara bağlı
Yorumum doğru mu? Peki Akka'daki Oyuncu ile Reaktördeki Tüketici arasındaki kavramsal fark nedir?