使用JMeter模拟设备通过MQTT发送数据

简介: 使用JMeter模拟设备通过MQTT发送数据

需求: 需要一个工具能够支持MQTT协议发送各种不同的数据。


目的: 模拟小型温室设备反馈,搭建一个测试环境,根据测试的数据显示硬件的状态和数值。


工具:JMeter


环境:需要配置Java运行环境。


操作步骤:


1. 下载JMeter运行包


下载地址:jmeter.apache.org/download_jm…,下载后可以解压到任意目录


2. 安装JDK,配置Java的运行环境(请自行用谷歌或必应搜索)


3. 启动jmeter的执行程序


打开解压文件的bin目录,执行命令:sh jmeter


打开后如下图,在新增测试计划的具体事例时,我们是找不到MQTT协议的。所以我们还需要安装MQTT的插件包


1.1.jpg


4. 安装MQTT插件


  1. 从 GitHub 上下载最新版本插件 mqtt-xmeter-2.0.2-jar-with-dependencies.jar,该插件支持 JMeter 3.2 及以上版本。
  2. 将插件 jar 包拷贝到 JMeter 的插件目录:$JMETER_HOME/lib/ext
  3. 重新启动 JMeter。


这时候在去创建测试事例,就能看到支持MQTT协议的测试入口了


1.2.jpg


5. 切换到中文


默认是英文,可以手动切换成中文。


1.3.jpg


如果想修改默认的语言配置,打开bin目录下的jmeter.properties文件,搜索language,把#language=en 改成language=zh_CH


1.4.jpg


重启后,默认打开就是中文了。接下来我们开始创建一个MQTT的测试。


6. 创建测试用例


a. 创建线程组


主要设置线程数、Ramp-Up时间和循环次数。下面表示的1秒钟内启动2个线程,发送1次请求数据。如果循环次数勾选永远,就会一直发送。


1.5.jpg


b. 创建MQTT连接


  1. 先创建一个Connect连接MQTT


1.6.jpg1.7.jpg


注意超时时间,这里默认的是10毫秒,如果MQTT服务不稳定,可能会出现偶尔连不上的问题,建议1000毫秒


  1. 创建MQTT pub Sampler录入要发送MQTT的topic,如果需要发送不同数据,可以创建一个CVS,从表里获取数据。这时候在Pub sampler 里就需要使用${}来获取数据,字符串要加“”。


1.8.jpg


如果想要重复获取数据,在遇到文件结束符再次循环要选true,停止线程那里要选false。


1.9.jpg


  • 最好设置一个定时器,控制发送的频率。比如设置10毫秒一次,相当于1个线程1秒发送100次数据


1.10.jpg


最后,创建一个查看结果数,可以查看发送的明细。看汇总就创建一个汇总报告。


如果要模拟多个设备,那就创建多个线程组即可。如果想要测试MQTT服务能承受多大的并发, 可以根据需要设置线程数和间隔时间,不过这个数量如果特别大的话,并发量会不精准,但总体上还是可以达到我们的测试目的。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
30天前
|
消息中间件 网络协议 物联网
MQTT常见问题之物联网设备端申请动态注册时MQTT服务不可用如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
2月前
|
消息中间件 存储 监控
|
2月前
|
机器学习/深度学习 开发工具
DP活动:HMI-Board以太网数据监视器(二)MQTT和LVGL
DP活动:HMI-Board以太网数据监视器(二)MQTT和LVGL
32 1
|
30天前
|
消息中间件 物联网 关系型数据库
MQTT常见问题之消息对列mqtt的历史数据查看失败如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
1月前
|
监控 网络性能优化 网络安全
【MODBUS】Modbus主站为边缘设备通过MQTT协议上云
【MODBUS】Modbus主站为边缘设备通过MQTT协议上云
34 1
|
2月前
|
消息中间件 Web App开发 监控
mqtt数据问题之如何实现webRTC 协议的监控视频压测
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
63 0
|
4月前
|
消息中间件 Shell Docker
百度搜索:蓝易云【docker rabbitmq-清空queue队列数据】
通过以上步骤,您可以使用Docker清空RabbitMQ队列的数据。这将帮助您重置队列并清除旧数据,以进行新的测试或使用。
33 0
|
4月前
|
存储 JSON 数据库
从 MQTT、InfluxDB 将数据无缝接入 TDengine,接入功能与 Logstash 类似
利用 TDengine Enterprise 和 TDengine Cloud 的数据接入功能,我们现在能够将 MQTT、InfluxDB 中的数据通过规则无缝转换至 TDengine 中,由于该功能在实现及使用上与 Logstash 类似,本文将结合 Logstash 为大家进行解读。
83 1
|
5月前
|
消息中间件 算法 关系型数据库
RocketMQ中,对一个包含200万条数据的表进行新建索引时,通常会需要锁定该
RocketMQ中,对一个包含200万条数据的表进行新建索引时,通常会需要锁定该
29 2
|
5月前
|
消息中间件 Java Spring
Spring Boot使用RabbitMq消费数据较慢解决
Spring Boot使用RabbitMq消费数据较慢解决
112 0