我想为我的微服务(MS((具有相同配置的同一类型的多个实例(使用动态和集中配置策略,我正在使用Azure应用程序配置(AAC(。我想尽量减少对AAC的调用,所以当一个MS启动时,我想从AAC中读取配置,并将其保留,直到做出更改,即我不希望每次对configuration["Env:service:some-param"]的调用都生成对AAC。我已经通过事件网格和servicebus事件解决了通知部分,因此所有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进行不必要的调用,我认为如果我获取刷新并在事件发生时触发它,配置将被重新加载,但事实似乎并非如此,因为SetCacheExpilation似乎覆盖了所有内容,所以我的问题是。。。给定的场景在.net核心中无法解决吗?或者我可以通过某种方式实现吗?
如果要使用基于事件的刷新模型强制缓存过期,请确保调用IConfigurationRefresher.SetDirty
。否则,您将遇到您提到的缓存尚未失效的问题,刷新调用将是否定的。