我正在启动一个新项目(基于Java)。我需要将其构建为模块化,分布式和弹性架构。
因此,我希望业务流程能够相互通信,可互操作且独立。
我现在看的是两个框架,除了年龄不同外,它们还表达两种不同的观点:
选择上述框架之一时应该考虑什么?
据我到目前为止所知,Akka仍然以某种方式耦合在一起(以某种方式我必须“选择”我想向其发送消息的演员),但非常有弹性。当Reactor松动时(基于事件发布)。
有人可以帮助我了解如何做出正确的决定吗?
更新
在更好地回顾了Akka 的事件总线之后,我认为Akka已经包含了Reactor所表达的功能。
例如,可以在Akka中表示为https://github.com/reactor/reactor#events-selectors-and-consumers上记录的订阅和事件发布:
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");
因此,在我看来,两者之间的主要区别在于:
- Akka更成熟,绑定到Typesafe
- 早期反应堆,绑定到Spring
我的解释正确吗?但是,Akka中的Actor和Reactor中的Consumer之间在概念上有什么区别?