Управление текущим смещением в кафке - PullRequest
0 голосов
/ 04 февраля 2020

Я не смог найти никакой информации в документации о том, как Кафка управляет текущим смещением для потребителя. Я предполагаю, что потребитель по умолчанию сохраняет последнее смещение, считанное в памяти, и фиксирует это либо при явном вызове commitSync или commitAsync, либо согласно политике enable.auto.commit. Это правильно или я что-то упустил? Если кто-то может указать на документацию или какую-либо ссылку на этот аспект управления смещением, это будет высоко оценено.

Заранее спасибо.

1 Ответ

0 голосов
/ 04 февраля 2020

A группа потребителей , это набор потребителей, которые координируют прием сообщений от topi c (s). Теперь один из ваших брокеров Kafka действует как координатор группы , который отвечает за координацию всех потребителей, принадлежащих к этой группе.

В зависимости от конфигурации enable.auto.commit и способа, которым вы обрабатываете управление смещением в своем коде, они будут зафиксированы и сохранены в топике c с именем __consumer_offsets.


Если для enable.auto.commit установлено значение True, то смещение потребителя периодически фиксируется в фоновом режиме. С другой стороны, commitSync() и commitAsync() являются блокирующими и неблокирующими вызовами соответственно, которые позволяют фиксировать смещения вручную. Если вы используете один из commitSync() или commitAsync(), рекомендуется установить enable.auto.commit на False.

В редком случае, когда ваша политика enable.auto.commit установлена ​​на True, но в то же время вы используете один из commitSync() или commitAsync(), смещения будут зафиксированы в обоих случаях:

  • Каждый раз, когда вы звоните commitSync() или commitAsync()
  • Каждые N мс, где N является настраиваемым параметром (auto.commit.interval.ms)

Если для enable.auto.commit установлено значение true, то наибольшее смещение фиксируется каждый auto.commit.interval.ms времени. Однако это происходит только всякий раз, когда вызывается poll(). В каждом опросе (max.poll.interval.ms) проверяется enable.auto.commit. Всякий раз, когда вы опрашиваете (), потребитель проверяет, настало ли время передать смещение, возвращенное в последнем опросе.

Подробнее см. В Документация Confluent для управления смещением .

...