前言
mqtt-jmeter插件是JMeter中的一个第三方插件,用于支持MQTT(Message Queuing Telemetry Transport)协议的性能测试。MQTT是一种轻量级的发布/订阅消息传输协议,广泛应用于物联网和传感器网络中。
一、安装插件
把下载的 ***.jar 插件复制到apache-jmeter安装目录\lib\ext\下
二、连接MQTT服务器
1、插件安装完成后,运行Jmeter我们就能看见mqtt相关的插件了
2、添加MQTT Connect,右击 线程组-添加-取样器-MQTT Connect
名称 | 说明 |
---|---|
Server name or IP | 指向被测 MQTT 服务器地址 |
Port number | MQTT 服务器端口,默认 TCP 连接的端口是 1883 |
MQTT version | 目前支持 MQTT 3.1及3.1.1版本 |
Timeout | 连接超时设置,以秒为单位 |
Protocols | 支持TCP、SSL、WS 和 WSS 方式连接 MQTT 服务器。当选择 SSL 或 WSS 加密通道连接时,可以选择单向或者双向认证(Dual)。如果希望进行双向认证,还需要指定相应的客户端证书(p12证书),以及对应的文件保护密码(Secret) |
User authentication | 如果 MQTT 服务器配置了用户认证,需要提供相应的用户名(User name)和密码(Password) |
ClientId | 虚拟用户的标识。如果勾选了「Add random suffix for ClientId」,将会在 ClientId 的基础上给每个虚拟用户再添加一个 uuid 串作为后缀,整个作为虚拟用户标识 |
Keep alive(s) | 心跳信号发送间隔。例如,300 表示客户端每隔 300 秒向服务器发出 ping 请求,以保持连接活跃 |
Connect attempt max | 第一次连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。如果希望一直尝试重连,可以设为 -1 |
Reconnect attempt max | 后继连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。如果希望一直尝试重连,可以设为 -1 |
Clean session | 如果希望在连接之间保留会话状态,可以将该选项设为 false。如果不希望在新的连接中保留会话状态,则将该项设为true |
3、添加MQTT Pub Sampler ,右击线程组-添加-取样器-MQTT Pub Sampler
名称 | 说明 |
---|---|
QoS Level | 服务质量,取值为 0,1,2,分别代表 MQTT 协议规范里的至多一次(AT_MOST_ONCE),至少一次(AT_LEAST_ONCE),精确一次(EXACTLY_ONCE) |
Retained messages | 如果希望使用「保留消息」,可将该选项设为 true,MQTT 服务器端将会存储插件发布的保留消息及其 QoS,并在相应 topic 上发生订阅时,直接将最后一条保留消息投递给订阅端,使得订阅端不必等待即可获取发布端的最新状态值 |
Topic name | 发布消息所属的主题 |
Add timestamp in payload | 如果勾选,发布的消息体开头会附带当前时间戳,配合消息订阅采样器的 Payload includes timestamp 选项,可以在消息接收端计算消息达到的延时。如果不勾选则只发送实际的消息体 |
Payloads Message type | 目前支持三种消息类型:【String: 普通字符串】【Hex String: 以 16 进制数值表示的串,比如字符串 Hello, 可以表示为 48656C6C6F (其中,48在ascii表中对应字母H,依次类推)。通常 16 进制串用来构造非文本的消息体,例如描述某些私有的协议交互和控制信息等等】【Random string with fixed length: 按指定长度(单位为byte)生成随机串作为消息体】 |
4、添加MQTT Sub Sampler,右击线程组-添加-取样器-MQTT Sub Sampler
名称 | 说明 |
---|---|
QoS Level | 服务质量,含义与消息发布采样器相同 |
Topic name(s) | 订阅消息所属的主题。支持单个消息订阅采样器订阅多个主题,主题之间用逗号分隔 |
Payload includes timestamp | 如果勾选,会从消息体开头处解析发送时间戳,配合消息发布采样器的 Add timestamp in payload 选项,可以用于计算消息的接收延时。如果不勾选则只解析实际的消息体 |
Sample on | 采样方式,默认为"specified elapsed time(ms)“,即每隔指定的毫秒时间采样一次。也可以选择"number of received messages”,即每接收到指定的消息数采样一次 |
Debug response | 如果勾选,消息内容会打印在 JMeter 的响应结果中。该选项主要用于调试目的,正式运行测试不建议勾选,以免影响测试效率 |
5、添加MQTT DisConnect,右击线程组-添加-取样器-MQTT DisConnect
- MQTT DisConnect作用主要是用来断开MQTT连接的
6、 添加查看结果树,右键线程组-添加-监听器-查看结果树,运行刚刚添加的MQTT请求,结果如下: