首页 > 解决方案 > 如何创建自定义 JMeter 预处理器以将 json 有效负载转换为 MQTT 二进制数据包

问题描述

我需要一个 JMeter 预处理器,它将 JSON 字符串转换为 MQTT 数据包,即二进制数据。然后将使用 JMeter Web 套接字插件通过 Web 套接字发送二进制数据 - https://github.com/ptrd/jmeter-websocket-samplers

我对 JMeter 比较陌生,希望能对此提供任何帮助。有关项目方案,请参阅我之前的问题:

使用 JMeter 测试 MQTT 客户端

标签: mqttjmeter-pluginsjmeter-5.0java-websocket

解决方案


您好心地提供了该文档的链接,该文档说:

请求-响应采样器以及单读和单写采样器同时支持文本和二进制帧。对于二进制帧,以十六进制格式输入有效负载,例如,0xca 0xfeba be

所以

  1. 文本数据可以按原样发送(JSON 或多或少是纯文本)
  2. 二进制(非文本)数据需要先转换为十六进制

所以你需要确定你到底需要什么,因为你当前的需求有点模糊和矛盾。

如果您正在寻找将字符串转换为十六进制的函数 - 您可以使用JSR223 PreProcessor和类似的东西:

def hex(byte[] data) {
    def rv = new StringBuilder();
    data.each { aByte ->
        rv.append('0x').append(String.format("%02x", aByte)).append(' ');
    }
    return rv.toString();
}

演示:

在此处输入图像描述

有关 JMeter 中 Groovy 脚本的更多信息:Apache Groovy - 为什么以及如何使用它


推荐阅读