Saya sedang dalam proses memulai proyek baru (berbasis java). Saya perlu membangunnya sebagai arsitektur modular, terdistribusi, dan tangguh.
Oleh karena itu, saya ingin proses bisnis dapat berkomunikasi di antara mereka sendiri, dapat dioperasikan, tetapi juga independen.
Saat ini saya sedang melihat dua kerangka kerja yang, selain perbedaan usia, mengekspresikan 2 pandangan berbeda:
- Akka ( http://akka.io )
- Reaktor ( https://github.com/reactor/reactor )
Apa yang harus saya pertimbangkan saat memilih salah satu kerangka kerja di atas?
Sejauh yang saya pahami sampai sekarang, Akka entah bagaimana masih digabungkan (dengan cara saya harus 'memilih' aktor yang ingin saya kirimi pesan), tetapi sangat tangguh. Sementara Reaktor longgar (berdasarkan postingan acara).
Dapatkah seseorang membantu saya memahami bagaimana membuat keputusan yang tepat?
MEMPERBARUI
Setelah meninjau Bus Acara Akka dengan lebih baik, saya yakin dalam beberapa hal fitur yang diungkapkan oleh Reaktor sudah termasuk dalam Akka.
Misalnya langganan dan penerbitan acara, yang didokumentasikan di https://github.com/reactor/reactor#events-selectors-and-consumers , dapat diekspresikan di Akka sebagai berikut:
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");
Oleh karena itu menurut saya sekarang perbedaan utama antara keduanya adalah:
- Akka, lebih dewasa, terikat pada Typeafe
- Reaktor, tahap awal, terikat ke Spring
Apakah interpretasi saya benar? Tapi apa perbedaan secara konseptual antara Aktor Akka dan Konsumen di Reaktor ?