[英]Java Akka Actor and Streams
我从https://doc.akka.io/docs/akka/current/index.html 开始学习 akka
我有带有子演员的 ActorSystem 以及在父演员的层次结构中创建的所有子演员。 例如:DeviceManager 是我的父 actor,device 是子 actor。
我想了解 akka stream 流程在演员生命周期中的起点。 当我们创建父 actor 或者 stream 进程什么时候开始?
Akka stream 与Actor生命周期有什么关联?
Akka stream 与Actor生命周期有什么关联?
Akka Streams 和 Typed Actor API 本质上是两个独立的 API,它们可以互操作并共享一些实现细节。 您使用 Actor API 创建的任何 actor 的生命周期完全独立于您正在运行的任何流。 (反之亦然。)
我想了解 akka stream 流程在 actor 生命周期中从哪里开始,当我们创建父 actor 时 stream 进程将启动?
如上所述,流是独立的。 stream(表示为RunnableGraph
)将在您run
时“启动”。 (并不是说有几种方便的方法可以做同样的事情,例如Source.runWith
、 Source.runForeach
等等。任何带有“run”的流方法都可能“启动”stream。)这个“启动”被称为物化,其中你的图(由源、流和汇组成),它只是 stream 的蓝图,被生成。
开始学习的好地方是streams quickstart 。
我有带有子演员的 ActorSystem 以及在父演员的层次结构中创建的所有子演员。 DeviceManager 是我的父 actor,device 是子 actor。
如果您想让两者互操作,请查看 Akka Streams 文档的Actor Interop部分。 但作为一个例子,如果你有一个 stream 的物联网数据,你正在 Akka Stream 中处理,并且在 stream 的末尾你想将 stream 的元素发送到你的 DeviceManager actor,你可以使用ActorSink.actorRefWithBackpressure
。 您只需在 stream 的末尾使用该 Sink,然后您的 actor 就会收到正常的 actor 消息。 (如果您不需要背压,您可以只使用ActorSink.actorRef
,但如果您使用的是 Streams,则应该使用背压。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.