我正在开始一个新的项目(基于 java)。我需要把它构建成一个模块化、分布式和弹性的架构。
因此,我希望业务流程之间能够相互通信,能够互操作,也能够独立。
我现在看到的这两个框架,除了年龄上的差异,还表达了两种不同的观点:
在选择上述框架之一时,我应该考虑什么?
据我所知,到目前为止,阿卡仍然是某种耦合(在某种程度上,我必须’选择’演员,我要发送的消息) ,但非常有弹性。而反应堆是松散的(因为是基于事件发布)。
有人能帮我理解如何做出正确的决定吗?
更新
在审查更好的 活动巴士的阿卡,我相信在某些方面的 由反应堆表示的特性已经包括在阿卡。
例如,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");
因此,在我看来,两者之间的主要区别是:
我的解释正确吗? 但是 在概念上,阿卡的参与者和反应堆的消费者之间的区别是什么?