翻译自:https://github.com/App-vNext/Polly/wiki/Dynamic-reconfiguration-during-running
点此跳转到系列目录
Polly的一般用法是在启动时配置策略,然后在需要的地方应用这些策略。
PolicyRegistry
支持这种场景: 策略可以在启动时集中配置一次,然后放入 PolicyRegistry
的实例中。然后, PolicyRegistry
的实例可以通过依赖项注入提供给调用点。
使用PolicyRegistry在运行时动态配置策略
此模式的一个自然扩展是在运行期间使用 PolicyRegistry
进行动态重新配置。
:在某些应用程序中,能够动态地重新配置策略,而不需要重新启动进程以获取新配置,这是很有用的。 例如,您可能希望根据生产条件调整断路器阈值,使其更敏感或更不敏感。
然而,Polly策略被有意设计成策略的配置是不可变的:这避免了易变配置可能出现的陷阱,比如如何以原子方式更新配置;以及当配置更新时,可能或应该对正在运行的操作产生什么影响。
使用’ PolicyRegistry '可以实现动态重新配置,当检测到基础配置源发生更改时,您可以简单地用一个新的策略替换注册表中的策略。 下次调用站点从注册中心提取策略时,它将提取新配置的版本。
这对于配置源尤其有效,当底层配置源发生更改时,配置源可以发出通知。这可以通过引发一个事件,提供一个 Observable
,或者在发生变化时调用Http端点来实现。