Akka Actor模型在Java中实现



Akkka库中的AbstractOractor和Untypedactor类之间的区别是什么?这两个类都用于创建演员。但是是什么将它们分开?!

它们是在Java中创建演员的单独的API,UntypedActor已弃用,并已被AbstractActor取代,在Java 8上发起了java 8的lambda Expressions,接收函数对实施比以旧的方式实施。

旧的( debecated ,自2.5.0(方法:

// this is DEPRECATED -----------vvvvvvvvvvvv
class My_OLD_STYLE_Actor extends UntypedActor {
  @Override
  public void onReceive(Object msg) {
    if (msg instanceof RequestMonies) {
      RequestMonies req = (RequestMonies) msg;
      // ...
    } else if (msg instanceof CheckStatus) {
      CheckStatus check = (CheckStatus) msg;
      // ...
    } else unhandled();
  }
}

,这是使用适当的电流API的同一片段: AbstractActor是当前API(自2.5.0(:

public class JavaStyleActor extends AbstractActor {
  @Override
  public Receive createReceive() {
    return receiveBuilder()
      .match(RequestMonies.class, req -> {
        // handle request monies...
      })
      .match(CheckStatus.class, check -> {
        // ...
      })
      .build();
  }
}

您会注意到铸造的需求已经消失了,并且需要确保手动打电话给未手动打电话。总体而言,新的API更容易做正确的事情。随着Akka的黎明在2018年初准备就绪,它将变得更好 - 请密切关注。

总的来说,如果您使用Java的Akka构建新事物,则只需忽略UntypedActor的存在即可。它只是为了过去使用它来建造事物的人,以便他们可以在2.5的生命周期中平稳地更改为Abstractactor。

最新更新