【发布时间】:2019-08-12 05:10:19
【问题描述】:
我有这个代码:
def makeFlow()(implicit timeout: Timeout): Flow[Any, Any, NotUsed] = {
val ref: ActorRef = startActor()
Flow[Any].mapAsync(42)(ref.ask)
}
这会泄露演员。每次我具体化包含此流程的图形时,都会创建一个参与者。当图被拆除时,这个actor不会被销毁。
我知道how to stop an actor。当图形停止时,我该如何安排呢?
【问题讨论】:
-
Actor 和 Akka 流共享 ActorSystem 吗?
-
@mdm 是的,它们共享同一个 ActorSystem。
-
能否将返回类型调整为
(Flow[Any, Any, NotUsed], ActorRef)?然后,您可以在具体化后使用适合您用例的任何关闭方法(毒丸等)。 -
@LeviRamsey 我可以,但我希望有某种方法可以将它全部封装在这个函数中。
标签: scala akka akka-stream