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

DLQ / retry consumer

Примеры3B · Общие setup/версии · Фактические проверки (архив рабочего проекта)

Тип материала: учебное практическое упражнение. Выполненные и непроверенные шаги указаны отдельно.

Команды выполняются из examples/processing после общего setup; $labPython — interpreter venv. Runtime и documented expected result различаются.

Зависимости и версии

Kafka4.1/client2.12/SQLite; sequential safe-offset consumer. Consumer публикует quarantine с confirmed delivery callback перед source commit.

Команды запуска

docker compose exec kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server kafka:9092 --create --if-not-exists --topic handbook.retry --partitions 1 --replication-factor 1
docker compose exec kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server kafka:9092 --create --if-not-exists --topic handbook.dlq --partitions 1 --replication-factor 1
& $labPython kafka_producer.py --topic handbook.retry --poison
& $labPython kafka_consumer.py --topic handbook.retry --group handbook-retry-v1 --database output/retry.sqlite --max-records 6 --dlq handbook.dlq

Тестовые данные

Пять valid raw records плюс not-json. Quarantine key=topic:partition:offset; envelope содержит raw_base64 и error class, не только потерянный текст ошибки. Key не удаляет log duplicates автоматически.

Ожидаемый результат

На fresh fixture disposed6, valid unique effects4/totals275/50, quarantine получает malformed record. SQLite transient errors ограничены3 attempts; unresolved failure stops без commit последующего offset. DLQ unavailable также stops, а не теряет source message.

Ограничения и статус проверки

Broker/producer callback/rebalance runtime NOT_RUN. DLQ publication при lost ACK может повториться. Нет полноценного async retry-topic scheduler или global ordering guarantee; consumer намеренно sequential. DLQ owner/ACL/retention/remediation обязательны для реального применения.

Полный журнал ограничений (архив рабочего проекта) хранит NOT_RUN и failed runtime attempts; их нельзя считать выполненными integration tests.