作为概念证明的一部分,我们试图将ASF可靠服务或Actor状态存储在持久数据存储(如MongoDB或DocumentDB)中。
我们的想法是提供一个自定义状态管理器,它将数据存储在数据库中而不是内存中(或磁盘,或ASF所做的任何事情)。
到目前为止,我们无法找到指南文档,说明如何在创建可靠服务或Actor时向ASF提供自定义状态管理器。
非常感谢任何帮助。
答案 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,就像在任何其他程序中一样。