Azure Service Fabric - 外部状态管理器

时间:2018-02-12 11:08:09

标签: service-fabric-stateful service-fabric-actor azure-service-fabric

作为概念证明的一部分,我们试图将ASF可靠服务或Actor状态存储在持久数据存储(如MongoDB或DocumentDB)中。

我们的想法是提供一个自定义状态管理器,它将数据存储在数据库中而不是内存中(或磁盘,或ASF所做的任何事情)。

到目前为止,我们无法找到指南文档,说明如何在创建可靠服务或Actor时向ASF提供自定义状态管理器。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

当您注册Actor类型时,您可以为其指定自己的自定义IActorStateManager。在此ActorService中,您可以注入自己的IActorStateProvider ActorRuntime.RegisterActorAsync<CustomActor>((context, actorType) => new CustomActorService(context, actorType, /* Inject a factory that creates StateManagers here */ stateManagerFactory: (actorBase, provider) => new CustomActorStateManager(actorBase, provider), /* Inject a custom state provider here */ stateProvider: new CustomStateProvider() ) ).GetAwaiter().GetResult(); 。修改Program.cs:

{{1}}

有状态的服务非常相似。

答案 1 :(得分:0)

内置的状态管理器是高度专业化的(磁盘,内存,仲裁),我建议在将数据存储在不同的商店时使用“常规”方式(api)。

因此,对于DocumentDb,您只需使用client,就像在任何其他程序中一样。