Не уверен, правильно ли я понимаю этот вопрос:
Используя KafkaUtils.createStream()
, сама программа является потребителем, который получает данные пассивно.Поскольку Kafka
поддерживает только свое собственное смещение, Kafka
не знает, где программа потребляет.Таким образом, если происходит сбой Kafka
, он может переслать данные, которые были отправлены получателю, и это приведет к дублированию данных.
При использовании KafkaUtils.createDirectStream()
сама программа напрямую использует внутренние Kafka
разделы, поэтомузнает, где он потребляет, и независимо от того, что само по себе или Kafka
терпит неудачу, он может повторно потреблять из правильной позиции.
Я хочу подтвердить, правильно ли я понимаю.Любая помощь приветствуется.