Spring integration Spring集成DSL在流之间收集度量

Spring integration Spring集成DSL在流之间收集度量,spring-integration,spring-integration-dsl,Spring Integration,Spring Integration Dsl,我正在将Spring Integration DSL与ActiveMQ一起用于并发消费者,并尝试调整Spring IntegrationFlows的指标,该流程使用直接通道和路由器相互交互 典型的集成流程如下所示: -> InboundFlow1 -> Transformer| ActiveMQ Broker ->JMS InboundAdapter -> Router |

我正在将Spring Integration DSL与ActiveMQ一起用于并发消费者,并尝试调整Spring IntegrationFlows的指标,该流程使用直接通道和路由器相互交互

典型的集成流程如下所示:

                                                -> InboundFlow1 -> Transformer|
ActiveMQ Broker ->JMS InboundAdapter -> Router |                             -> OutboundFlow -> JMS OutboundAdapter
                                                -> InboundFlow2 -> Transformer|
每个流包含入站JMS适配器、路由器、筛选器、转换器和出站JMS网关

有没有办法从InboundAdapter到OutboundAdapter收集这些指标:

  • 每秒的消息量
  • 消息的总量
  • 通过流的最小传输时间
  • 通过流的最大传输时间
  • 通过流传输的平均时间
  • 错误消息的数量
  • 处理消息的持续时间
我尝试过使用MessageChannelMetrics提出的解决方案:


但是它们没有包含所需的功能。

除了第一个和最后一个之外,所有的东西都存在;第一种是可以导出的;最后一种方法意味着为每条消息捕获它,这将非常昂贵

然而,SpringIntegration5.0.4现在除了支持这些标准度量之外,还支持其他度量

编辑

此外,如果标准度量不能满足您的需要,您始终可以添加自定义度量工厂


只需编写自己的
AbstractMessageHandlerMetrics
子类即可捕获所需内容。

谢谢您的回答Gary,是否认为spring的版本也应该更新?是的,spring Integration 5.0.x需要spring Framework 5.0.x。不幸的是,到spring 5的迁移并不像预期的那样简单。您能否添加一个示例,如何计算流执行的总消耗时间?如果有任何示例,我将不胜感激。使用spring集成示例,我无法找出如何以最佳方式完成此任务
count*(average)duration
请记住,平均持续时间会随着时间和消息而衰减,因此只有在消息到达率和处理时间相当恒定的情况下,此任务才有意义。如果标准度量不能满足您的需要,您可以添加自定义度量工厂。