制片人在Kafka重新启动上丢失了一些信息



kafka客户端:0.11.0.0-cp1kafka经纪人:

在Kafka Broker Rolling重新启动时,我们的应用程序在发送给经纪人时丢失了一些消息。我相信滚动重新启动时,不应该丢失消息。这些是生产者(使用异步发送()的生产者,而不是使用回调/未来等),我们正在使用:


val acksConfig: String = "all",
val retriesConfig: Int = Int.MAX_VALUE,
val retriesBackOffConfig: Int = 1000,
val batchSize: Int = 32768,
val lingerTime: Int = 1,
val maxBlockTime: Int = Int.MAX_VALUE,
val requestTimeOut: Int = 420000,
val bufferMemory: Int = 33_554_432,
val compressionType: String = "gzip",
val keySerializer: Class<StringSerializer> = StringSerializer::class.java,
val valueSerializer: Class<ByteArraySerializer> = ByteArraySerializer::class.java

我在日志中看到这些例外

2019-03-19 17:30:59,224 [org.apache.kafka.clients.producer.internals.Sender] [kafka-producer-network-thread | producer-1] (Sender.java:511) WARN  org.apache.kafka.clients.producer.internals.Sender  - Got error produce response with correlation id 1105790 on topic-partition catapult_on_entitlement_updates_prod-67, retrying (2147483643 attempts left). Error: NOT_LEADER_FOR_PARTITION

但log说重试的尝试离开了,我很好奇为什么它不重试呢?让我知道是否有人有任何想法?

要注意的两件事:

  1. 您要产生的主题的复制因素是什么?min.insync.replicas的要求数是多少?
  2. "生产者丢失了一些消息"是什么意思。如果生产商无法成功生产#min.insync.replicas经纪人,它将引发异常和失败(用于同步生产)。如果失败(同步或异步生产),则由生产者/客户重试。

最新更新