[英]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.