Microprofile Config:容错度量标记的动态ConfigSource值



我目前正在开发一个解决方案,为微文件容错框架设置度量标记。我们将其与度量一起使用,但不能通过容错注释直接设置标签。

因此,我们想出了一个变通方法,通过Interceptor设置ThreadLocal值,然后由自定义ConfigSource读取。ConfigSource在其getValue(final String propertyName)方法中检查"mp.metrics.tags""MP_METRICS_TAGS"配置密钥。如果每次处理容错注释时都会调用getValue,那么这基本上是可行的。但情况似乎并非如此,方法的调用是随机发生的。

在我的观点中,ConfigSources和它们的getValue(final String propertyName)应该总是被调用,因为开发人员可能依赖于每秒都可能更改的配置值。

你知道为什么不调用配置源吗?

当多次或至少在服务器启动阶段返回null时,似乎不再调用自定义ConfigSource。在上面提到的场景中,可以通过返回一个空字符串来绕过它。然后,在运行时对每个getValue()方法调用也调用ConfigSource

MicroProfile Config 1.4规范指出,不应缓存ConfigSource的值,因此,如果您的MicroProfile ConfigConfig实现(您没有说明它是哪个实现(正在缓存对ConfigSource#getValue()的调用结果,则它是不兼容的,据我所知(规范有缺陷,不太严格,TCK也参差不齐,但在这个问题上似乎很清楚(。

(请注意,给定的ConfigSource实现当然可能决定从其getValue()方法返回缓存的值。(

最新更新