Предупреждение в журнале брокера о смешивании типов фиксации смещения

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

Недавно я заметил, что все смещения являются четными числами (0,2,4,6,8) и что у нас есть следующее предупреждение в журнале брокера.

[2019-01-24 03:06:24,473] WARN [GroupMetadataManager brokerId=0] group: xxxx-group with leader: 1e9856a9-bce1-4a28-9774-0117382a9751-4d9411d1-36fb-4332-af9b-beb65aedfed1 has received offset commits from consumers as well as transactional producers. Mixing both types of offset commits will generally result in surprises and should be avoided. (kafka.coordinator.group.GroupMetadataManager)

Что-то не так с тем, как мы реализуем «ровно один раз»? это действительно приведет к сюрпризам?

Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
0
0
639
1

Ответы 1

Я предполагаю, что вы совершаете транзакцию для каждой отдельной записи.

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

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

Теперь по поводу предупреждений в логах:

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

Другие вопросы по теме