我有此代码:
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。当图表停止时我该如何安排呢?
答案 0 :(得分:0)
您的问题是您在流级别上,因此,使用此功能时,没有任何迹象表明何时应该是销毁actor的正确时间。 您可以让演员在闲置一段时间后为自己安排毒药,但这看起来像丑陋的设计。 因此,Levi Ramsey提出的建议似乎是您最干净的选择。另一个可能是传递一个用于Graph状态的指标对象,如果该指标对象指示当前有最后一个元素流过该对象,则可以在询问后发送毒药。