2017-01-28 6 views
0

Я новичок в Kafka, и есть некоторые вещи, которые мне непонятны.Поведение потребителя Kafka для несуществующего смещения

  1. Брокер Kafka спустится вниз, продюсер спустится.
  2. Брокер Kafka спустится, потребитель пойдет вниз.
  3. Если мы начнем со смещения, которого не существует, оно будет поражено бесконечно.

ответ

0
  1. продюсер не будет идти вниз, он будет выбирать другой (живой) брокера, чтобы произвести в. Если нет других живых брокеров, вы получите ошибку в ответе производителя (в любом случае это не приведет к сбою).
  2. Потребитель не опустится, потребитель (ы) перебалансирует оставшиеся (живые) разделы. Если у вас есть репликация для разделов этого брокера, их лидер изменится.
  3. Он не застрянет. Поведение в этом случае зависит от того, что вы установили в auto.offset.reset конфигурации потребителя (https://kafka.apache.org/documentation/#newconsumerconfigs).
    Если вы установите его на earliest, он сбросит смещение до самого раннего из доступных в разделах.
    Если вы установите его на latest, он сбросит смещение до последней доступной в разделе.
    Если вы установили его в none, это сделает исключение для потребителя.

Что касается 1 & 2 - если вы хотите, чтобы производитель/потребитель остановился в этом случае, вы можете реализовать его с некоторым кодированием.