Отправка из внешней системы в Kafka без дубликатов в транзакции

#apache-kafka

#apache-kafka

Вопрос:

У меня есть требование отправлять данные из внешней системы в тему Kafka с семантикой ровно один раз. Источник имеет смещение, мы можем использовать сообщения с заданным смещением.

Просматривая документацию Kafka, я вижу, что есть 2 способа сделать это.

  1. Соединитель источника Kafka
  2. Используйте обычный Kafka producer с транзакциями.

Похоже, что вариант 1 теперь не поддерживает семантику ровно один раз, Kafka jira 6080 не разрешен. Также я хотел бы понять, как мы можем сделать это напрямую с API-интерфейсами производителя. Для варианта 2 цикл (consume, transform, product) во всех документах показывает фиксацию смещений потребителей с использованием AddOffsetsToTxn. Какова рекомендуемая стратегия, если источник не является темой Kafka? Похоже, что запись исходного смещения в другой теме как части транзакции и использование его во время восстановления будет работать. Это рекомендуемый способ?