Кафка трансляция. Как узнать смещения чтения для группы потребителей, если единственный потребитель в группе выходит из строя - PullRequest
0 голосов
/ 16 января 2019

Насколько я понимаю, лучший способ организовать трансляцию (то есть каждый потребитель получает все сообщения) дать каждому потребителю свой собственный идентификатор группы потребителей.

Проблема в том, что "If all consumers in a group leave the group, the group is automatically destroyed" (источник: https://jaceklaskowski.gitbooks.io/apache-kafka/kafka-properties-group-id.html) так что это означает, что если мой потребитель выключит соответствующую запись с ключом groupId,topicName,partitionNumber до __consumer_offsets будет удален, что означает, что когда потребитель снова поднимется, с тем же идентификатором группы, он не сможет читать сообщения, отправленные во время его отсутствия.

Кто-нибудь знает решение этой проблемы?

1 Ответ

0 голосов
/ 16 января 2019

the group is automatically destroyed не означает, что вся информация о группе исчезает. Я думаю, что это относится к данным, которые хранятся в памяти. Информация о offset не удаляется из __consumer_offsets. В зависимости от значения свойства offsets.retention.minutes (свойство брокера) старые смещения удаляются. По умолчанию 7 дней (10080 минут)

В документации Apache Kafka вы можете найти информацию о offsets.retention.minutes property brokers config

offsets.retention.minutes - После того, как группа потребителей потеряет всех своих потребителей (то есть станет пустой), ее смещения будут сохраняться в течение этого периода хранения перед тем, как их сбросить. Для автономных потребителей (с использованием ручного назначения) смещения будут истекать после времени последней фиксации плюс этот период хранения.

Это означает, что если в течение offsets.retention.minutes минут ни один из потребителей из определенной группы не будет подключен, информация о смещении будет удалена.

...