如何在 Jmeter 中将 MQTT 连接设置为属性并将其传递给其他线程以使用 Pub 采样器在 MQTT 代理上发布消息

问题描述 投票:0回答:2

我想将 MQTT 连接设置为 Jmeter 属性,并在其他线程中使用此连接,该线程将同时向 MQTT 代理发布消息。我想要实现的是

  1. 将 MQTT 连接设置为 Jmeter 属性
  2. 1 个线程将使用连接将消息发布到 MQTT 代理
  3. MQTT 断开连接

到目前为止,我所做的是在同一线程组中使用 MQTT 连接、发布采样器和 MQTT 断开连接。但是,当运行多个线程时,除了线程 1 之外,消息发布失败。

如果有任何方法可以实现这一点,请告诉我。

jmeter mqtt jmx
2个回答
1
投票

我不这么认为:

  1. 将连接移动到另一个线程组中
  2. 尝试通过单个连接与多个虚拟用户同时发布消息

是一个好主意,因为行为良好的 JMeter 测试必须代表应用程序的实际使用情况,并且每个 JMeter 线程(虚拟用户)必须代表一个支持 MQTT 的设备,该设备建立自己与代理的连接。如果“消息发布失败”,则表明您的测试设置(参数化、相关性等)或您的 MQTT 代理存在问题,所以首先我会检查:

请参阅测试 IoT 的 MQTT 消息代理 - 指南文章了解更多详细信息。


如果您仍在寻找在线程组之间传递 MQTT 连接的方法,您可以使用 JSR223 Test Elements 和以下代码来完成此操作:

  1. 将连接保存到属性中:

    props.put('connection', vars.getObject('conn'))
    
  2. 从属性中获取连接对象:

    vars.putObject('conn', props.get('connection'))
    

0
投票

Efficient MQTT Connect 和 Mqtt-Jmeter 插件中的 MQTT Connect 有什么区别?

如果是,请提供来源/参考资料,以便我也可以阅读。

我不明白为什么这些相同的元素出现在 mqtt-jmeter 插件中,但它们却执行相同的工作。

© www.soinside.com 2019 - 2024. All rights reserved.