0

我想为我的微服务 (MS)(具有相同配置的多个相同类型的实例)使用动态和集中配置策略,并且我正在使用 Azure 应用程序配置 (AAC)。我想最小化对 AAC 的调用,所以当一个 MS 启动时,我想从 AAC 读取配置并保留它直到进行更改,即我不希望每次调用 Configuration["Env:service:some-param"] 生成调用AAC。我已经通过 eventgrid 和 servicebus-events 解决了通知部分,因此所有 MS 都会收到已进行更改的通知,但我真的找不到任何好的解决方案来强制按需从 AAC 重新加载配置。在 Program.cs 我通过以下方式连接 AAC:

config.AddAzureAppConfiguration(options =>
                       options
                          .Connect(connection)
                          .ConfigureRefresh(refresh =>
                          {
                              refresh.Register(environment + ":" + service + ":<Some-param>",true)
                                     .SetCacheExpiration(TimeSpan.FromDays(1));
                              _environmentRefresher = options.GetRefresher();
                          })

为什么我设置 SetCacheExpiration(TimeSpan.FromDays(1)) 是因为我不想对 AAC 进行不必要的调用,我认为如果我获取刷新器并在事件发生时触发它,配置将被重新加载,但似乎并非如此由于 SetCacheExpiration 似乎覆盖了所有内容,所以我的问题是......给定的场景在.net核心中无法解决还是我可以通过某种方式实现这一点?

4

1 回答 1

2

IConfigurationRefresher.SetDirty如果您想使用基于事件的刷新模型强制缓存过期,请确保调用。否则,您将遇到您提到的缓存尚未失效的问题,并且刷新调用将是无操作的。

于 2021-01-06T16:23:21.633 回答