You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JMeter与AMQP插件计算RabbitMQ消息往返时间?

用JMeter计算RabbitMQ消息从发布者到消费者的耗时

当然可以实现,以下是具体操作步骤:

1. 给发布的消息嵌入高精度时间戳

别用普通的${__time()},换成纳秒级时间戳保证精度,比如把消息构造成JSON格式,带上发送时间字段:

{
  "content": "你的测试内容",
  "sendTime": "${__time(,)}${__timeNanos(,)}"
}

__time()获取秒级时间,__timeNanos()获取纳秒部分,拼起来就是精确到纳秒的完整时间戳,避免高并发下时间戳重复。

2. 消费端提取时间戳并计算耗时

在RabbitMQ消费者Sampler后面添加一个JSR223 PostProcessor,用Groovy脚本处理:

  • 从收到的消息里解析出sendTime字段并转成数字类型
  • 获取当前时间的纳秒级时间戳
  • 计算时间差值,转成毫秒/微秒后存为JMeter变量,方便后续统计

示例Groovy脚本:

// 解析JSON格式的消息体
def message = new groovy.json.JsonSlurper().parseText(prev.getResponseDataAsString())
def sendTime = Long.parseLong(message.sendTime)
def receiveTime = System.nanoTime()
// 计算耗时,这里转成微秒(除以1000),也可以转毫秒(除以1000000)
def latency = (receiveTime - sendTime) / 1000
// 存为变量,后续用聚合报告等组件统计
vars.put("messageLatency", latency.toString())

3. 统计耗时数据

  • 添加聚合报告,在「要统计的额外列」中填入messageLatency,就能看到该字段的平均值、90%响应时间等统计结果
  • 也可以添加图形结果组件,实时查看耗时的变化趋势

注意事项

  • 确保发布端和消费端的机器时间同步,否则计算出的耗时会存在误差
  • 如果消息体不是JSON格式,调整脚本中的解析逻辑即可,比如按分隔符提取字段
  • 高并发场景下建议使用Groovy脚本(性能远优于BeanShell),避免拖慢测试进程

内容的提问来源于stack exchange,提问作者Pittiplatsch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:11:06