gpt4 book ai didi

java - Java 中的 Akka Actor 模型实现

转载 作者:行者123 更新时间:2023-11-29 06:50:51 25 4
gpt4 key购买 nike

Akka 库中的 AbstractorActor 和 UntypedActor 类有什么区别。这两个类都用于创建 Actor 。但是是什么将它们分开?!

最佳答案

它们是在 Java 中创建 Actors 的独立 API,UntypedActor 已被弃用,并已被 AbstractActor 取代,Java 8 开始出现,这要归功于它的 lambda 表达式接收函数比旧方法更容易实现。

旧的(已弃用,自 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 Typed 在 2018 年初投入生产的曙光,它在 2018 年会变得更好——请密切关注。

总的来说,如果您使用 Akka 和 Java 构建新事物,则只需忽略 UntypedActor 的存在即可。它仅适用于过去使用它构建事物的人,以便他们可以在 2.5 的生命周期内顺利地更改为 AbstractActor。

关于java - Java 中的 Akka Actor 模型实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48862916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com