【问题标题】:Kafka Producer producer.send very slowKafka Producer producer.send 很慢
【发布时间】:2023-04-08 11:31:01
【问题描述】:

我正在尝试使用 Scala 为 Kafka 编写一个简单的 Avro 消息生成器。

我遇到的问题是发送速度很慢。

我正在这样做:

val message: GenericRecord = getRandomMessage()
val serializedMessage: Array[Byte] = serializeMessage(message)

val queueMessage = new ProducerRecord[String, Array[Byte]](topic, message.get("id").toString, serializedMessage)
producer.send(queueMessage)
println("Sent Message: "+ message)

在部署到我的集群时,以及从我的 IDE 运行时,发送消息的速度都非常慢。

从我读到的消息应该是异步的并且比这更快。

我有什么明显的遗漏吗?

谢谢!

【问题讨论】:

  • 为什么每次发送都要刷?让 Kafka 客户端为您处理缓冲。
  • 这只是我为了尝试而做的一个愚蠢的测试。我编辑并剪掉了那段代码。
  • 您能定义一下性能不佳的确切含义吗?
  • 消息似乎是同步发送的,每 10 秒或更长时间发送一条消息。 (又名“已发送消息:[...]”每 10 秒左右打印一次)
  • 这是哪个 Kafka 版本?您使用的是哪个版本的 Kafka 生产者?

标签: scala apache-kafka avro kafka-producer-api


【解决方案1】:

您确定消息已发送?

似乎send 失败(或超时运行)然后您打印消息,这当然不能保证成功发送。

要验证这一点,请尝试等待发送并打印结果:

println(producer.send(queueMessage).get)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2021-11-25
    • 2019-02-23
    相关资源
    最近更新 更多