如何在拆除Akka图表时释放资源?

问题描述 投票:1回答:1

我有这个代码:

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。如何在图表停止时安排发生这种情况?

scala akka akka-stream
1个回答
0
投票

你的问题在于你处于Flow级别,所以当使用它时,没有任何东西表明什么时候是演员被摧毁的正确时间。你可以让演员在一些空闲时间后为自己安排毒药,但这看起来像丑陋的设计。因此,Levi Ramsey提出的建议看起来就像是最干净的选择。另一个是传递Graph状态的指示符对象,如果它指示当前最后一个元素流过它,则可以在询问后发送毒丸。

© www.soinside.com 2019 - 2024. All rights reserved.