首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布和订阅用于gatling的jeanadrien/gatling-mqtt协议插件的问题

发布和订阅用于gatling的jeanadrien/gatling-mqtt协议插件的问题
EN

Stack Overflow用户
提问于 2017-09-28 08:26:17
回答 1查看 435关注 0票数 1

我想用gatling和mqtt做一些测试。gatling有不同的插件。我决定使用jeanadrien的插件,因为我发现的其他插件不支持订阅操作。

我在java中实现了一个“服务器端”mqtt客户机(客户机运行在与代理和数据库相同的节点上)。客户端具有订阅主题" number“中的数字的功能。订阅主题中的数字后,客户端使用mongodb中的number数据集读取。从mongodb读取数据集之后,客户端就发布主题"data“上的数据集。

我已经测试了"MQTT Box“作为用户客户端的功能,它可以很好地工作,如下面的图片所示。我将编号发送到主题" number“,并从主题" data”订阅数据。MQTT-Box

现在,我想使用gatling与插件创建相同的场景。为此,我写了一个。

代码语言:javascript
复制
package mqtt

import com.github.jeanadrien.gatling.mqtt.Predef._
import io.gatling.core.Predef._
import scala.concurrent.duration._



class Mqtt extends Simulation {


  val mqttConf = mqtt
    // MQTT broker
    .host("tcp://localhost:1883")


  val scn = scenario("MQTT")
      .exec(connect)
      .exec(subscribe("data").qosExactlyOnce)
      .exec(publish("number", "10").qosExactlyOnce)

  setUp(scn.inject(atOnceUsers(1))).protocols(mqttConf)


}

在运行测试时,我得到了以下错误:

模拟mqtt.Mqtt开始..。10:15:37.310错误c.g.j.g.m.a.PublishAction - 'mqttPublish-1‘执行失败:不能将类型为java.lang.String的值10转换到类[B ]

但是我的脚本类似于git的例子:https://github.com/jeanadrien/gatling-mqtt-protocol/blob/master/src/test/scala/MqttScenarioExample.scala

也许问题是我必须转换字节数组中的字符串?!我怎么才能修好它?

此外,我还想检查主题"data“的订阅结果。类似于我的websocket-脚本:

代码语言:javascript
复制
.check(wsAwait.within(10 seconds).until(1).regex(""".*"data_id" : 100.0.*"""))

如何使用mqtt的支票?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-09 12:07:29

我解决了我的问题。插件只支持二进制数据,不支持字符串。所以我把这个添加到我的代码中:

代码语言:javascript
复制
  val message = "10"
  val msg = message.getBytes("utf-8")

现在我使用"msg“作为发布方法的参数,它可以工作!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46464372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档