тест производительности на 1000 сообщений в очереди rabbitmq с использованием Gatling

У меня есть 2 очереди rabbitmq, одна очередь сообщений, а другая очередь результатов. Я хочу проверить производительность очереди сообщений. Когда я отправляю список json в очередь сообщений один за другим, это сообщение обрабатывается, а затем я получаю ответ в очереди результатов в этом формате.

на одно сообщение 5 ответных сообщений

{id:1234,status:processing}
{id:1234,status:processing}
{id:1234,status:processing}
{id:1234,status:processing}
{id:1234,status:complete}

Теперь я хочу проверить полный статус и найти время, необходимое для получения ответа с полным статусом

это сценарий

val scn: ScenarioBuilder = scenario("test1")
.exec {
  s: Session =>
    val list = data.toList *// data is the list of messages(they can me from 100 to 1000 or more)*
    s.set("list", list)
}
.foreach(s=>s("list").as[Seq[String]],"message") {

  exec(
    amqp("publish message to exchange").requestReply
      .queueExchange("message")
      .replyExchange("result")
      .textMessage("${message}")
      .priority(0)
      .contentType("application/json")
      .headers("test" -> "performance")
      .check(
        jsonPath("$.id").exists,
        jsonPath("$.id").saveAs("co-id"),
        jsonPath("$.status").is("Complete"),  *//this one fails with error msg- found processing*
        jsonPath("$.status").saveAs("status")
      )
  ).pause(20)
    .exec({session =>
    val status = session("status").as[String]
      val coId = session("co-id").as[String]
    println("Response body:::",coId,status)
    session
  }).pause(5)

}.pause(10)

person yog    schedule 30.04.2021    source источник


Ответы (1)


Взгляните на https://github.com/TinkoffCreditSystems/gatling-amqp-plugin/blob/master/src/test/scala/ru/tinkoff/gatling/amqp/examples/RequestReplyWithOwnMatchingExample.scala . Там вы найдете пример того, как написать тест с вашим собственным методом сопоставления.

Если я правильно понимаю ваш вопрос, вы можете вернуться из метода matchByMessage

  • для методов отправки что-то вроде messageId+_+complete
  • для получения сообщения вы должны извлечь состояние из сообщения

Если вы не хотите запускать плагин в режиме отладки локально, вы можете распечатать параметр сообщения из метода.

person EhmKah a.k.a. Michael Krauße    schedule 17.05.2021