gatling-kafka-plugin icon indicating copy to clipboard operation
gatling-kafka-plugin copied to clipboard

Kafka message key is None

Open primko opened this issue 2 years ago • 1 comments

Пример отправки сообщения

exec(
  kafka("Some kafka message with header")
    .send(
      None,
      "some payload",
      new RecordHeaders().add("headerKey", "headerValue".getBytes)
    )
)

Ожидается, что в кафку отправиться сообщение с ключём null, а отправляется None Пример "костыля" с которым работает верно ru.tinkoff.gatling.kafka.actions.KafkaRequestAction

val key = kafkaAttributes.key.map(k => k(session).toOption.get) match {
    case Some(value) => if (value == None) null.asInstanceOf[K] else value
    case None        => null.asInstanceOf[K]
  }

primko avatar Sep 05 '22 14:09 primko

Ага, можно еще немного менее костыльнее, например

val key: K = kafkaAttributes.key match {
  //если атрибут сессии существует, то берем его, если не можем, то возвращаем null
  case Some(value) => value(session).toOption.getOrElse(null.asInstanceOf[K])
  //если ключ = None (когда вызываем send(value))
  case None        => null.asInstanceOf[K]
}

для вот такой симуляции

exec(_.set("key", null))
.exec(
  kafka("Some kafka message with header")
    .send[String, String](
      "#{key}",
      "some payload",
      new RecordHeaders().add("headerKey", "headerValue".getBytes)
    )
)```

3alster avatar Feb 07 '23 12:02 3alster