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

ctzwtxfj  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(224)

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

  1. 1个线程,它将使用连接向MQTT代理发布消息
  2. MQTT断开
    到目前为止,我所做的是在同一个线程组中使用MQTT连接,发布采样器和MQTT断开连接。但是,当运行多个线程时,除了thread-1之外,消息发布失败。
    请让我知道是否有任何方法来实现这一点。
lymnna71

lymnna711#

我不认为:
1.将连接移动到另一个线程组
1.尝试通过单个连接与多个虚拟用户并发发布消息
是一个好主意,因为行为良好的JMeter测试必须代表应用程序的真实的使用情况,每个JMeter线程(虚拟用户)必须代表一个启用MQTT的设备,该设备建立自己与代理的连接。如果“messages are getting failed to publish”(消息发布失败),则表明您的测试设置(参数化,相关性等)或MQTT代理存在问题,因此首先我要检查:

  • 是否所有JMeter Variables都具有期望值
  • jmeter.log文件
  • 您的MQTT代理日志文件
  • 您的测试系统日志文件

有关详细信息,请参阅Testing the MQTT Messaging Broker for IoT - A Guide文章。
如果您仍在寻找在线程组之间传递MQTT连接的方法,您可以使用JSR223 Test Elements和以下代码来实现:
1.要将连接保存到属性中,请执行以下操作:

props.put('connection', vars.getObject('conn'))

字符串
1.要从属性获取连接对象,请执行以下操作:

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

ssm49v7z

ssm49v7z2#

@Dmitri T
我使用MQTT消息作为先决条件。因此,如果我在线程组之间共享单个连接就足够了,因为我没有测试MQTT iteslf的性能。
我尝试将连接保存为属性,它对于发布绝对有效,但订阅失败。你能建议一个替代方法吗?

相关问题