MQTT轨迹数据上传(Jmeter)

项目背景:

这次测试的是外海项目的接口,我们的轨迹上传走是的2条不通的通道,一个是MQTT协议(实时上传,付费通道),一个是HTTP协议(断网时缓存下来的轨迹在联网后上传,免费通道)。现在记录的是MQTT连接数上传测试

测试结构:

由于上传轨迹走的是MQTT通道,不需要绑定设备,只要联网就可以上传,所以发布者与订阅者只要连的是同一个Topic就可以发布与订阅数据。

1:下载QTT插件:

从github下载您需要的release版本, 解压mqtt–xmeter-jar-with-dependencies.jar.zip, 将生成的jar文件放到JMeter安装主目录  的lib/ext下,重启JMeter,就可以看到插件成功加载。

2:连接操作取样器(客户A )

Server name or IP: 指向被测MQTT服务器地址。

Port number: 通常TCP连接的端口时1883, SSL连接则是8883

MQTT version:选择3.1.1(选择3.1的话,有些需要传参的数据不支持这版本的话发布数据会报错)

Timeout(s): 连接超时设置,以秒为单位。

Protocols: 客户端与服务器通过SSL加密通道连接时,可以选择单向或者双向认证(Dual)。双向认证时,您还需要指定相应的信任秘钥库(Trust Key Store), 客户端证书,以及对应的文件保护密码(Secret)。这些文件可以通过服务器的证书配置转化得到。例如,对于EMQ的安装部署,<emqttd_home>/etc/cert下就存放了自签证的CA,服务器及客户端证书,参考下面的命令就可以生成插件所需的.jks, .p12文件,secret自行指定即可。(此项参数是查阅资料得知,固先copy过来,可能后续后用到)

export PATH=$PATH:<JDK_HOME>/bin

keytool -import -alias cacert -keystore emqtt.jks -file cacert.pem -storepass <Your_Secret> -trustcacerts -noprompt

keytool -import -alias client -keystore emqtt.jks -file client-cert.pem -storepass <Your_Secret>

keytool -import -alias server -keystore emqtt.jks -file cert.pem -storepass <Your_Secret>

openssl pkcs12 -export -inkey client-key.pem -in client-cert.pem -out client.p12 -password pass:<Your_Secret>

User authentication: 如果服务器配置了用户认证,您需要提供相应的用户名和口令。

ClientId: 标识客户端的固定前缀,每个连接(虚拟用户)再添加一个uuid串,整个作为客户标识。

            (我们的格式为:GID_dofun_car@@@+设备号,可能每个项目定义的不一样,需要问相关业务的开发同事)

Keep alive(s): 心跳信号发送间隔。例如,300表示客户端每隔300秒向服务器发出ping请求,以保持连接活跃。

Connection keep time(s): 连接建立后,保持该连接的时长。例如,300表示300秒之后连接将被关闭,即使一直发送心跳信号。

Connect attempt max: 第一次连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。

Reconnect attempt max: 后继连接过程中,尝试重连的最大次数。超过该次数则认为连接失败。

3:发布操作取样器(客户A )

QoS Level: 服务质量,取值为0,1,2,分别代表MQTT协议规范里的至多一次,至少一次,精确一次(详情可再查看其它资料看下)

Topic name:为发布的主题名称(如果需要订阅此主题,那么订阅的主题名称必须与此此发布的主题名称一致)

Add timestamp in payload:如果勾选,发布的消息体开头会附带当前时间戳,利用它可以在消息接收端计算消息达到的延时。不勾选则只发送实际的消息体。

Message type: 目前支持三种消息类(发布的数据内容需要符合服务器的格式,不然不接收的)

  String: 普通字符串 

  Hex String: 以16进制数值表示的串,比如字符串Hello, 可以表示为48656C6C6F (其中,48在ascii表中对应字母H,依次类 推)。通常16进制串用来构造非文本的消息体,例如描述某些私有的协议交互和控制信息等等。

  Random string with fixed length: 按指定长度生成随机的串作为消息

4:订阅操作取样器(客户A )

5:连接操作取样器(客户B)

6:发布操作取样器(B客户)

     B客户发布的主题名为A客户订阅的主题,所以A订阅的主题命名为B发布的主题名

7:订阅操作取样器(B)

     B订阅的主题名为A客户发布的主题,所以B订阅的主题名与A发布的主题名一致。

8:执行测试(查看发布的消息服务器是否接收到,可从监控台里面查看)

 

  • QoS Level: 服务质量,含义与发布操作取样器相同。
  • Topic name: 订阅消息所属的话题。
  • Payload includes timestamp: 如果勾选,会从消息体开头处解析发送时间戳,用于计算消息的接收延时。
  • Debug response: 如果勾选,消息内容会打印在JMeter的响应结果中,用于调试目的。正式运行测试建议不勾选。
  •  

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
传感器通过MQTT协议将采集到的数据上传到服务器,实现了传感器数据的实时传输和远程监控。MQTT(Message Queuing Telemetry Transport)是一种轻量级的通信协议,适用于物联网设备之间的通信。 首先,传感器与物联网平台建立MQTT连接。传感器需要提供服务器的地址、端口号以及认证信息,以便能够与服务器进行通信。然后,传感器将使用MQTT发布-订阅模型中的发布者角色,将采集到的数据封装成MQTT消息,通过特定的主题发布到服务器上。 服务器上也需要运行一个MQTT代理程序,该程序负责接收传感器发布的消息。当传感器发布一条新消息时,代理程序将根据该消息的主题,将其推送给所有订阅该主题的订阅者,也就是服务器上的订阅程序。 服务器上的订阅程序负责接收传感器发送的数据,并进行相应的处理。处理的方式根据具体需求而定,可以是实时显示数据、存储到数据库或进行其他分析处理。订阅程序还可以向传感器发送指令,控制其采集行为或进行其他操作。 传感器上传数据到服务器的过程是实时的,可以保证数据的及时性和准确性。使用MQTT协议进行数据的传输,具有传输快速、实时性好、传输量小等特点,非常适用于物联网中传感器数据上传到服务器的场景。 总而言之,传感器通过MQTT协议将数据上传到服务器,实现了实时传输和远程监控。这种方式可以广泛应用于物联网领域,为各种应用场景提供了方便、快捷、可靠的数据传输解决方案。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值