Java 中的 Akka Actor 模型实现
Akka Actor Model implementation in Java
Akka 库中的 AbstractorActor 和 UntypedActor 类 有什么区别。 类 都用于创建演员。但是他们有什么区别?!
它们是分开的 API 以在 Java 中创建 Actors,UntypedActor
已弃用并已被 AbstractActor
取代,开始于 [=29] =] 8 多亏了 which 的 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 年会变得更好——请密切关注。
总的来说,如果您使用带有 Java 的 Akka 构建新事物,请忽略 UntypedActor
的存在。它只对过去使用它构建东西的人仍然存在,以便他们可以在 2.5 的生命周期中顺利地更改为 AbstractActor。
Akka 库中的 AbstractorActor 和 UntypedActor 类 有什么区别。 类 都用于创建演员。但是他们有什么区别?!
它们是分开的 API 以在 Java 中创建 Actors,UntypedActor
已弃用并已被 AbstractActor
取代,开始于 [=29] =] 8 多亏了 which 的 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 年会变得更好——请密切关注。
总的来说,如果您使用带有 Java 的 Akka 构建新事物,请忽略 UntypedActor
的存在。它只对过去使用它构建东西的人仍然存在,以便他们可以在 2.5 的生命周期中顺利地更改为 AbstractActor。