Перейти к содержанию

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.