Kafka idempotent producer¶
Примеры3B · Общие setup/версии · Фактические проверки (архив рабочего проекта)
Тип материала: учебное практическое упражнение. Выполненные и непроверенные шаги указаны отдельно.
Команды выполняются из examples/processing после общего setup; $labPython — interpreter venv. Runtime и documented expected result различаются.
Зависимости и версии¶
Те же версии; producer.py, librdkafka wheel bundled client version записывается в QA protocol.
Команды запуска¶
& $labPython kafka_producer.py --mode idempotent
& $labPython kafka_producer.py --mode transactional --transactional-id handbook-logical-writer-1
Тестовые данные¶
Тот же файл с explicit duplicate e1; transactional command — отдельный эксперимент и создаёт ещё пять application sends, если выполнить оба.
Ожидаемый результат¶
Каждый запуск ACKs5 records, не4. enable.idempotence подавляет protocol retry duplicates, а не повтор строки файла. Transactional run публикуется committed при success; downstream reader использует read_committed. Фактическую библиотечную fencing/error behavior проверяют на broker.
Ограничения и статус проверки¶
Стабильный transactional.id принадлежит одному logical writer, одновременно независимые producers его не делят. Demo останавливается при transaction error/ambiguous outcome, не делает blind business resend. Broker crash/fencing tests NOT_RUN.
Полный журнал ограничений (архив рабочего проекта) хранит NOT_RUN и failed runtime attempts; их нельзя считать выполненными integration tests.