0

我目前正在研究为微配置文件容错框架设置度量标签的解决方案。我们将它与指标一起使用,但不能通过容错注释直接设置标签。

所以我们想出了一个解决方法ThreadLocal,通过一个拦截器设置一个值,然后由一个自定义的ConfigSource. 它的方法中的ConfigSource检查"mp.metrics.tags""MP_METRICS_TAGS"配置键。如果每次处理容错注释时都会调用getValue(final String propertyName)它,这基本上会起作用。getValue但似乎情况并非如此,并且该方法的调用是随机发生的。

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

为什么不调用配置源的任何想法?

4

2 回答 2

0

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

于 2020-12-03T08:55:40.337 回答
0

MicroProfile Config 1.4 规范表明不应缓存 aConfigSource,因此如果您的 MicroProfile ConfigConfig实现(您没有说它是哪个实现)正在缓存对其调用的结果ConfigSource#getValue()不符合要求,最好我可以说(规范有缺陷,不是很严格,它的 TCK 参差不齐,但在这个问题上似乎很清楚)。

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

于 2020-12-09T22:54:30.263 回答