我正在使用每个设备都有自己的参与者以及系统中的其他参与者的模型来评估 IoT 样式应用程序的 Service Fabric。我知道不活跃的 Actor 会自动被垃圾收集,但他们的状态会在他们重新激活时持续存在。我还看到有一种方法可以显式删除 actor 及其状态。
在我的场景中,我想知道是否有关于如何处理休眠、失败或“消失”并且不再发送另一条消息的设备的任何模式或建议。如果没有明确的删除,它们的状态将永远存在,我想自动清理它,例如:六个月后。
最佳答案
这是一个有效的方法。
private async Task Kill()
{
// Do other required cleanup
var actorToDelete = ActorServiceProxy.Create(ServiceUri, Id);
await actorToDelete.DeleteActorAsync(Id, CancellationToken.None).ConfigureAwait(false);
}
然后只需使用以下行调用此方法:
var killTask = Task.Run(Kill);
这将启动一个引用 actor 的新线程,该线程将被阻塞直到当前回合结束。当任务最终获得对 Actor 的访问权限时,它将删除它。美妙之处在于,这可以在 actor 内部调用,这意味着他们可以“ self 删除”。
关于azure-service-fabric - 清理 Azure Service Fabric 中的休眠参与者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37341735/