Продюсер потерял какое-то сообщение при перезагрузке кафки - PullRequest
0 голосов
/ 20 марта 2019

Kafka Client: 0.11.0.0-cp1 Кафка Брокер:

При перезапуске брокера Kafka наше приложение потеряло некоторые сообщения при отправке брокеру. Я считаю, что при повторном запуске не должно быть потери сообщения. Это настройки производителя (с использованием Producer с асинхронной отправкой () и без обратного вызова / будущего и т. Д.), Которые мы используем:


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

Но в журнале написано, что попытка повторения оставлена, мне любопытно, почему она не повторилась? Дайте мне знать, если у кого-нибудь есть идеи?

1 Ответ

2 голосов
/ 20 марта 2019

Две вещи, на которые стоит обратить внимание:

  1. Каков коэффициент тиражирования создаваемой темы и сколько нужно min.insync.replicas?
  2. Что выподразумевается под "производитель потерял несколько сообщений".Производитель, если он не может успешно выдать брокерам # min.insync.replicas, выдаст исключение и завершится ошибкой (для синхронного производства).Производитель / клиент должен повторить попытку в случае сбоя (синхронное или асинхронное производство).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...