来自RabbitMQ的高精度队列统计信息

来自RabbitMQ的高精度队列统计信息,rabbitmq,Rabbitmq,我需要以尽可能高的精度记录Rabbit中消息进入和离开特定队列的速率。我知道API已经提供了发布和交付速率,但我感兴趣的是在已知的时间段内捕获原始传入和传出值,以便以更高的精度和我选择的时间段估算速率 理想情况下,我会按需(即根据我选择的时间表)检查,例如,到目前为止已进入队列的消息(“已发布”消息)的当前累积计数,以及已消费的消息(“已传递”消息)的当前累积计数 通过这些类型的累积计数,我可以: 计算我自己的进入或退出队列的消息增量,例如执行Δ\u计数=累计\u计数(t)-累计\u计数(t-

我需要以尽可能高的精度记录Rabbit中消息进入和离开特定队列的速率。我知道API已经提供了发布和交付速率,但我感兴趣的是在已知的时间段内捕获原始传入和传出值,以便以更高的精度和我选择的时间段估算速率

理想情况下,我会按需(即根据我选择的时间表)检查,例如,到目前为止已进入队列的消息(“已发布”消息)的当前累积计数,以及已消费的消息(“已传递”消息)的当前累积计数

通过这些类型的累积计数,我可以:

  • 计算我自己的进入或退出队列的消息增量,例如执行
    Δ\u计数=累计\u计数(t)-累计\u计数(t-1)
  • 计算吞吐量速率执行
    吞吐量=Δ_计数/Δ_时间
  • 可能推断消息一天中在队列中停留的时间
在计算这些累积计数时,后两种方法在理想情况下依赖于精确的时间戳


我试图直接使用解决这个问题,但这样做时遇到了一个问题。当我计算队列中的消息累积计数时,我得到了一个我不期望的数字

例如,考虑下面的屏幕截图。

条目90和91之间的
Δ_消息_计数
1810-1633=177
。因此,正如我所说的,我认为发布的消息和交付的消息之间的差异也应该是
177
(特别是,发布的消息比交付的消息多177条)

但是,当我计算这些差异时,我发现差异不是
177

  • 已发布(传入)消息的Δ:
    13417517652009-13417517651765=244
  • Δ传递(传出)消息:
    1341751765667-1341751765450=217
因此,我们得到了
244-217=
27
消息。这表明有
177-27=150
消息“未解释的”

为什么?

我尝试考虑API提供的重新传递的消息,但在我运行测试时它们是不变的,这表明没有重新传递的消息,所以我不希望这起作用