0

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

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

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

非常感谢任何帮助。

4

2 回答 2

0

当你注册你的 Actor 类型时,你可以ActorService为它指定你自己的自定义。您可以在此 ActorService 中注入您自己的IActorStateManagerIActorStateProvider. 修改 Program.cs:

            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();

有状态服务非常相似。

于 2018-02-12T16:43:03.737 回答
0

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

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

于 2018-02-12T18:57:29.633 回答