作为概念证明的一部分,我们尝试将 ASF 可靠服务或 Actor 状态存储在持久数据存储(如 MongoDB 或 DocumentDB)中。
这个想法是提供一个自定义状态管理器,它将数据存储在数据库中,而不是内存(或磁盘,或任何 ASF 所做的)中。
到目前为止,我们无法找到说明如何在创建 Reliable Service 或 Actor 时向 ASF 提供自定义状态管理器的指南文档。
非常感谢任何帮助。
作为概念证明的一部分,我们尝试将 ASF 可靠服务或 Actor 状态存储在持久数据存储(如 MongoDB 或 DocumentDB)中。
这个想法是提供一个自定义状态管理器,它将数据存储在数据库中,而不是内存(或磁盘,或任何 ASF 所做的)中。
到目前为止,我们无法找到说明如何在创建 Reliable Service 或 Actor 时向 ASF 提供自定义状态管理器的指南文档。
非常感谢任何帮助。
当你注册你的 Actor 类型时,你可以ActorService
为它指定你自己的自定义。您可以在此 ActorService 中注入您自己的IActorStateManager
和IActorStateProvider
. 修改 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();
有状态服务非常相似。
内置的状态管理器是高度专业化的(磁盘、内存、仲裁),我建议在不同的存储中存储数据时使用“常规”方式(api)。
因此,对于 DocumentDb,您只需使用client,就像在任何其他程序中一样。