服务结构 - 手动Actor停用以进行调试/测试

时间:2016-09-26 10:15:37

标签: c# azure azure-service-fabric

我正在使用具有状态的ReliableActors处理Service Fabric项目。我保存并删除了actor状态中的东西,并且有一些我想要测试的重新激活逻辑。

有没有办法手动停用或垃圾收集演员?我最好有一个测试加载数据到actor,停用它,然后运行一些函数,以确保演员仍然按预期操作。

2 个答案:

答案 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运行时收集垃圾)。演员及其状态也可以随时手动删除。

https://github.com/Azure/azure-content/blob/master/articles/service-fabric/service-fabric-reliable-actors-lifecycle.md