Алгоритм неявного именования Kafka Consumer Group - PullRequest
0 голосов
/ 13 марта 2019

Когда идентификатор клиента явно не установлен клиентским приложением kafka, как именно создается имя группы потребителей, на основании чего?Я вижу, что есть некоторые случаи, когда он включает имя серверного процесса (например, когда используется kafka-console-consumer.sh, тогда это что-то вроде console-consumer-nnnn), который запускает потребителя, иногда это отражает тот факт, чтопотребитель подключился через прослушиватель без аутентификации (например, anonymous.AAAAAAAA-BBBB-CCCC ...).Где задокументирован этот алгоритм именования?

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Если group.id не указан, kafka-console-consumer.sh генерирует случайный идентификатор группы потребителей.

Для получения дополнительной информации об этом вы можете обратиться к ConsoleConsumer (kafka.tools.ConsoleConsumer.scala) по адресу kafka

Блок кода из ConsoleConsumer.scala

 groupIdsProvided.headOption match {
      case Some(group) =>
        consumerProps.put(ConsumerConfig.GROUP_ID_CONFIG, group)
      case None =>
        consumerProps.put(ConsumerConfig.GROUP_ID_CONFIG, s"console-consumer-${new Random().nextInt(100000)}")
        // By default, avoid unnecessary expansion of the coordinator cache since
        // the auto-generated group and its offsets is not intended to be used again
        if (!consumerProps.containsKey(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG))
          consumerProps.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "false")
        groupIdPassed = false
    }
1 голос
/ 13 марта 2019

Согласно документации Apache Kafka https://kafka.apache.org/documentation/#consumerconfigs

group.id

Уникальная строка, идентифицирующая группу потребителей данного потребителя. принадлежит. Это свойство требуется, если потребитель использует функциональность управления группой с помощью подписки (тема) или Стратегия управления офсетами на основе Kafka.

Как правило, вы должны добавить это свойство. Но есть некоторые ситуации, когда вам не нужно это передавать, напр. KafkaConsumer::assign(...).

Kafka Client (Kafka Consumer) по умолчанию не генерирует group.id. Это могут делать некоторые сторонние библиотеки или программы: kafka-console-consumer.sh (kafka.tools.ConsoleConsumer), потоковая структура с искрой и т. Д.

...