我正在使用具有状态的ReliableActors处理Service Fabric项目。我保存并删除了actor状态中的东西,并且有一些我想要测试的重新激活逻辑。
有没有办法手动停用或垃圾收集演员?我最好有一个测试加载数据到actor,停用它,然后运行一些函数,以确保演员仍然按预期操作。
答案 0 :(得分:3)
您可以adjust将演员视为空闲时间以强制更频繁地进行垃圾收集。文档中的代码:
ActorRuntime.RegisterActorAsync<MyActor>((context, actorType) =>
new ActorService(context, actorType,
settings:
new ActorServiceSettings()
{
ActorGarbageCollectionSettings =
new ActorGarbageCollectionSettings(idleTimeoutInSeconds: 20, scanIntervalInSeconds:20)
}))
.GetAwaiter()
.GetResult();
正如您所看到的,有两个参数:idleTimeoutInSeconds - 在此之后,无法执行任何操作的actor可以考虑停用; scanIntervalInSeconds - 服务结构将检查actor处于不活动状态的时间间隔。
答案 1 :(得分:1)
如果您的意思是在“停用”时删除,则可以使用以下内容:
await myActorServiceProxy.DeleteActorAsync(actorToDelete, cancellationToken)
第一次调用actor时,会激活actor。如果在可配置的时间段内未使用actor,则会停用actor(由Actors运行时收集垃圾)。演员及其状态也可以随时手动删除。