启动时获取所有 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()
好吗?
不幸的是 Spring 集成指标在首次使用时注册。
这意味着像 increase 这样的普罗米修斯查询函数给出了错误的计算。
有没有办法获取 Spring 集成中的所有频道名称,以便我可以为每个频道初始化指标?
我正在使用 dsl。
我看过这个 https://gist.github.com/flopezluis/2964429 但他们使用 XML 找到他们的频道名称。
感谢任何帮助,谢谢。
我不确定你为什么需要频道名称,因为这个故事实际上是关于调用 MessageChannel.send()
,所以你可能只需要一个 ApplicationContext.getBeansOfType(MessageChannel.class)
。但请注意,向通道发送消息不仅会触发指标注册,还会触发另一端的消费。因此,您可能需要考虑在这些“初始”消息到达您的真正消费者之前以某种方式对其进行过滤。
另一方面,我想知道是否有一些 Micrometer 选项可以让那些计时器指标被急切地注册,即使我们还没有生成消息。尽早打电话给registry.timer()
好吗?