0

我正在实施一个自定义配置提供程序,以使用https://docs.microsoft.com/en-us/dotnet/core/extensions/custom-configuration-provider上的指南提供存储在我的 Azure Cosmos Db 中的配置设置。但是,除了本指南中的内容之外,我还想实现reload-on-change功能。

为此,我使用此处描述的提要处理器逻辑为我的 Cosmos Db 创建了一个“Watcher”类:https ://docs.microsoft.com/en-us/azure/cosmos-db/sql/change-feed -处理器。Watcher 给了我一个 IChangeToken,我将它传递给 ChangeToken.OnChange 方法,如下所示,并在新数据到达时设置它:

_changeTokenRegistration = ChangeToken.OnChange(
    () => cosmosDbProvider.Watch(),
    () =>
    {
        Console.WriteLine("Refreshing the configurations");
        Thread.Sleep(500); // a delay to prevent multiple call-backs
        Load(reload: true);
    });

这很好用,但我的问题是我使用 ChangeFeedProcessor 实现的 Watcher 确切知道在调用它时更改了哪些项目。然而,在“Load(...)”调用中,我正在重新加载所有设置,并再次调用我的 Cosmos Db。

我传递有关“发生了什么变化?”的数据的正确方法是什么?当令牌更改为我的 ConfigurationProvider 时,我不需要重新查询我的数据库来获取所有设置?

4

0 回答 0