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