我在这里完全感到迷惑(而且scala的隐密性没有帮助:-))
我正在尝试使用rabbitmq来设置加特林测试(即,我想将消息推送到rabbit q中并确定出现在第二个队列中需要多长时间)我正在使用gatling-amqp-plugin来执行此操作,因为加特林系统本身不支持amqp。
为了使这对我更“有趣”,我不使用Scala编写代码,并且从未使用过加特林....
所以我参加了“入门”项目gatling-sbt-plugin-demo
[一旦确定示例计算机数据库负载测试有效,就向该项目添加了一个新包,并从amqp项目(以及所需的Utils类)中放入了示例PublishExample。
我正在运行本地兔子docker映像...这是我使用的docker-compose:
version: '3'
services:
rabbi:
image: rabbitmq:3.6-management
hostname: "rabbi"
expose:
- "5672"
ports:
- "15672:15672"
- "5672:5672"
environment:
RABBITMQ_DEFAULT_USER: "USER"
RABBITMQ_DEFAULT_PASS: "PASS"
RABBITMQ_DEFAULT_VHOST: "VOST"
然后我尝试使用PublishExample运行加特林[]
package rabbit import io.gatling.core.Predef._ import io.gatling.core.structure.ScenarioBuilder import ru.tinkoff.gatling.amqp.Predef._ import Utils._ import ru.tinkoff.gatling.amqp.protocol.AmqpProtocolBuilder import scala.concurrent.duration._ class PublishExample extends Simulation { val amqpConf: AmqpProtocolBuilder = amqp .connectionFactory( rabbitmq .host("localhost") .port(5672) .username("USER") .password("PASS") .vhost("VOST") ) .usePersistentDeliveryMode val scn: ScenarioBuilder = scenario("AMQP test") .feed(idFeeder) .exec( amqp("publish to exchange").publish .directExchange("test_queue", "test_key") .textMessage("Hello message - ${id}") .messageId("${id}") .priority(0) .property("testheader", "testvalue") ) setUp( scn.inject(rampUsersPerSec(1) to 5 during (60 seconds), constantUsersPerSec(5) during (5 minutes)) ).protocols(amqpConf) .maxDuration(10 minutes) }
这是我得到的错误
: sbt:gatling-sbt-plugin-demo> gatling:test [info] Compiling 1 Scala source to<project_folder>/gatling-sbt-plugin-demo/target/scala-2.12/test-classes ... [info] Compiling 1 Scala source to<project_folder>/gatling-sbt-plugin-demo/target/scala-2.12/gatling-classes ... Simulation rabbit.PublishExample started... Uncaught error from thread [GatlingSystem-akka.actor.default-dispatcher-6]: java.lang.reflect.Field.canAccess(Ljava/lang/Object;)Z, shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[GatlingSystem] java.lang.NoSuchMethodError: java.lang.reflect.Field.canAccess(Ljava/lang/Object;)Z at ru.tinkoff.gatling.amqp.request.AmqpProtocolMessage.forceModify(AmqpProtocolMessage.scala:23) at ru.tinkoff.gatling.amqp.request.AmqpProtocolMessage.$anonfun$mergeProperties$3(AmqpProtocolMessage.scala:18) at scala.collection.IndexedSeqOptimized.foldLeft(IndexedSeqOptimized.scala:60) at scala.collection.IndexedSeqOptimized.foldLeft$(IndexedSeqOptimized.scala:68) at scala.collection.mutable.ArrayOps$ofRef.foldLeft(ArrayOps.scala:198) | => gat ru.tinkoff.gatling.amqp.request.AmqpProtocolMessage.$anonfun$mergeProperties$2(AmqpProtocolMessage.scala:18) at ru.tinkoff.gatling.amqp.request.AmqpProtocolMessage.$anonfun$mergeProperties$1(AmqpProtocolMessage.scala:14) at com.softwaremill.quicklens.package$PathModify.using(package.scala:62) at ru.tinkoff.gatling.amqp.request.AmqpProtocolMessage.mergeProperties(AmqpProtocolMessage.scala:16) at ru.tinkoff.gatling.amqp.action.AmqpAction.$anonfun$sendRequest$2(AmqpAction.scala:27) at io.gatling.commons.validation.Success.map(Validation.scala:45) at ru.tinkoff.gatling.amqp.action.AmqpAction.$anonfun$sendRequest$1(AmqpAction.scala:27) at io.gatling.commons.validation.Success.flatMap(Validation.scala:46) at ru.tinkoff.gatling.amqp.action.AmqpAction.sendRequest(AmqpAction.scala:24) at io.gatling.core.action.RequestAction.$anonfun$execute$1(Action.scala:100) at io.gatling.commons.validation.Success.flatMap(Validation.scala:46) at io.gatling.core.action.RequestAction.execute(Action.scala:97) at io.gatling.core.action.RequestAction.execute$(Action.scala:96) at ru.tinkoff.gatling.amqp.action.AmqpAction.execute(AmqpAction.scala:12) at io.gatling.core.action.Action.$bang(Action.scala:38) at io.gatling.core.action.Action.$bang$(Action.scala:38) at ru.tinkoff.gatling.amqp.action.AmqpAction.io$gatling$core$action$ChainableAction$$super$$bang(AmqpAction.scala:12) at io.gatling.core.action.ChainableAction.$bang(Action.scala:63) at io.gatling.core.action.ChainableAction.$bang$(Action.scala:61) at ru.tinkoff.gatling.amqp.action.AmqpAction.io$gatling$core$action$ExitableAction$$super$$bang(AmqpAction.scala:12) at io.gatling.core.action.ExitableAction.$bang(BlockExit.scala:141) at io.gatling.core.action.ExitableAction.$bang$(BlockExit.scala:139) at ru.tinkoff.gatling.amqp.action.AmqpAction.$bang(AmqpAction.scala:12) at io.gatling.core.action.SingletonFeed$$anonfun$receive$1.applyOrElse(SingletonFeed.scala:71) at akka.actor.Actor.aroundReceive(Actor.scala:539) at akka.actor.Actor.aroundReceive$(Actor.scala:537) at io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:25) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:612) at akka.actor.ActorCell.invoke(ActorCell.scala:581) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) at akka.dispatch.Mailbox.run(Mailbox.scala:229) at akka.dispatch.Mailbox.exec(Mailbox.scala:241) at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [info] Simulation(s) execution ended. [error] Error during tests: [error] Running java with options -classpath <my system class path> sbt.ForkMain 51328 failed with exit code 255 [error] (Gatling / test) sbt.TestsFailedException: Tests unsuccessful [error] Total time: 3 s, completed 26-Apr-2020 22:06:37 sbt:gatling-sbt-plugin-demo>
我在这里干什么干什么?我已经尝试过对host / vhost / directExchange配置进行各种更改,但我无法弄清楚自己在做什么错!!
还有这些是我在上面运行该代码时Rabbit的日志:
rabbi_1 | rabbi_1 | =INFO REPORT==== 26-Apr-2020::21:12:13 === rabbi_1 | accepting AMQP connection <0.619.0> (172.20.0.1:56118 -> 172.20.0.2:5672) rabbi_1 | rabbi_1 | =INFO REPORT==== 26-Apr-2020::21:12:13 === rabbi_1 | connection <0.619.0> (172.20.0.1:56118 -> 172.20.0.2:5672): user 'USER' authenticated and granted access to vhost 'VOST' rabbi_1 | rabbi_1 | =WARNING REPORT==== 26-Apr-2020::21:12:14 === rabbi_1 | closing AMQP connection <0.619.0> (172.20.0.1:56118 -> 172.20.0.2:5672, vhost: 'VOST', user: 'USER'): rabbi_1 | client unexpectedly closed TCP connection
所以我知道我正在'连接'到兔子
我在这里完全感到迷惑(并且scala的隐秘密码性无济于事:-)。我正在尝试使用Rabbitmq来建立加特林测试(即,我想将消息推送到Rabbit q中,并花费多长时间.. 。
Stacktrace是不言自明的: