我们如何在 Maven 项目中使用 gatling-mqtt 插件进行负载测试
how can we use gatling-mqtt plugin in a maven project for load testing
我有一个 java maven 项目,我希望能够使用 gatling 测试我们的 mqtt 代理的性能。我理解gatling直接不支持mqtt协议。
我在 github 中遇到了 gatling-mqtt plugin。我不确定如何在我的 Maven 项目中使用这个插件。我找不到现有的 Maven 插件或依赖项。
我在pom.xml
中添加了以下依赖
<dependency>
<groupId>io.gatling.highcharts</groupId>
<artifactId>gatling-charts-highcharts</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>io.gatling</groupId>
<artifactId>gatling-core</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.fusesource.mqtt-client</groupId>
<artifactId>mqtt-client</artifactId>
<version>1.12</version>
</dependency>
和以下插件:
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
<version>2.2.4</version>
<executions>
<execution>
<id>performanceTests</id>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<simulationClass>simulation.Publish</simulationClass>
</configuration>
</execution>
</executions>
</plugin>
我正在尝试编写与此非常相似的模拟:
import io.gatling.core.Predef._
import org.fusesource.mqtt.client.QoS
import scala.concurrent.duration._
import com.github.mnogu.gatling.mqtt.Predef._
class MqttSimulation extends Simulation {
val mqttConf = mqtt
// MQTT broker
.host("tcp://localhost:1883")
val scn = scenario("MQTT Test")
.exec(mqtt("request")
// topic: "foo"
// payload: "Hello"
// QoS: AT_LEAST_ONCE
// retain: false
.publish("foo", "Hello", QoS.AT_LEAST_ONCE, retain = false))
setUp(
scn
.inject(constantUsersPerSec(10) during(90 seconds)))
.protocols(mqttConf)
}
但是为了写这样的场景,我无法使用mqtt对象。
我得到的错误是 'not found: value mqtt'
我创建了一个包含在我的项目中的 gatling-mqtt 项目的 jar。然后我就可以使用 mqtt 对象了。
您可以通过下载 sbt 创建一个 jar。在您的控制台中,从项目路径 运行 命令“$sbt assembly”。这将为您创建一个 jar。
我有一个 java maven 项目,我希望能够使用 gatling 测试我们的 mqtt 代理的性能。我理解gatling直接不支持mqtt协议。
我在 github 中遇到了 gatling-mqtt plugin。我不确定如何在我的 Maven 项目中使用这个插件。我找不到现有的 Maven 插件或依赖项。
我在pom.xml
中添加了以下依赖<dependency>
<groupId>io.gatling.highcharts</groupId>
<artifactId>gatling-charts-highcharts</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>io.gatling</groupId>
<artifactId>gatling-core</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.fusesource.mqtt-client</groupId>
<artifactId>mqtt-client</artifactId>
<version>1.12</version>
</dependency>
和以下插件:
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
<version>2.2.4</version>
<executions>
<execution>
<id>performanceTests</id>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<simulationClass>simulation.Publish</simulationClass>
</configuration>
</execution>
</executions>
</plugin>
我正在尝试编写与此非常相似的模拟:
import io.gatling.core.Predef._
import org.fusesource.mqtt.client.QoS
import scala.concurrent.duration._
import com.github.mnogu.gatling.mqtt.Predef._
class MqttSimulation extends Simulation {
val mqttConf = mqtt
// MQTT broker
.host("tcp://localhost:1883")
val scn = scenario("MQTT Test")
.exec(mqtt("request")
// topic: "foo"
// payload: "Hello"
// QoS: AT_LEAST_ONCE
// retain: false
.publish("foo", "Hello", QoS.AT_LEAST_ONCE, retain = false))
setUp(
scn
.inject(constantUsersPerSec(10) during(90 seconds)))
.protocols(mqttConf)
}
但是为了写这样的场景,我无法使用mqtt对象。
我得到的错误是 'not found: value mqtt'
我创建了一个包含在我的项目中的 gatling-mqtt 项目的 jar。然后我就可以使用 mqtt 对象了。
您可以通过下载 sbt 创建一个 jar。在您的控制台中,从项目路径 运行 命令“$sbt assembly”。这将为您创建一个 jar。