启动时获取所有 Spring 集成通道名称 - 在启动时初始化 Spring 集成指标

Get all Spring integration channel names at startup - Initializing Spring Integration Metrics at startup

不幸的是 Spring 集成指标在首次使用时注册。

这意味着像 increase 这样的普罗米修斯查询函数给出了错误的计算。

有没有办法获取 Spring 集成中的所有频道名称,以便我可以为每个频道初始化指标?

我正在使用 dsl。

我看过这个 https://gist.github.com/flopezluis/2964429 但他们使用 XML 找到他们的频道名称。

感谢任何帮助,谢谢。

我不确定你为什么需要频道名称,因为这个故事实际上是关于调用 MessageChannel.send(),所以你可能只需要一个 ApplicationContext.getBeansOfType(MessageChannel.class)。但请注意,向通道发送消息不仅会触发指标注册,还会触发另一端的消费。因此,您可能需要考虑在这些“初始”消息到达您的真正消费者之前以某种方式对其进行过滤。

另一方面,我想知道是否有一些 Micrometer 选项可以让那些计时器指标被急切地注册,即使我们还没有生成消息。尽早打电话给registry.timer()好吗?