我们如何在 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。