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

Практикум: кто создаёт топик Kafka

Создание топиков из статьи. Нужен работающий Docker. Выполните команду из docs/blog/lab/2026-09-07-topics-on-startup в клоне репозитория:

uv run --no-project --python 3.13 --with-requirements requirements.txt topics_lab.py

Скрипт импортирует код статьи и общие функции из практикума про клиентов; соседняя директория должна быть на месте. В зависимостях закреплены aiokafka-foundation-kit 0.1.3, aiokafka 0.14.0 и testcontainers 4.15.0. Скрипт создаёт и удаляет брокер confluentinc/cp-kafka:7.6.0 в режиме KRaft. Автоматическое создание топиков на стороне брокера отключено.

Проверяются следующие результаты:

  • одного producer_lifecycle(topics=[...]) недостаточно для создания топика;
  • с auto_create_topics=True запрошенный топик создаётся;
  • три одновременных вызова функции из статьи создают один топик с тремя партициями и завершаются успешно;
  • запрос шести партиций при следующем вызове оставляет существующие три;
  • запрос трёх реплик у одного брокера вызывает InvalidReplicationFactorError;
  • корректный топик перед отклонённым остаётся созданным, следующий уже не создаётся.

После одновременного создания проверка ждёт обновления метаданных: подтверждение CreateTopics может прийти раньше, чем другой клиент увидит топик. Проверяется итоговое число партиций и реплик с ограниченным временем ожидания.

Строки PASS следуют за проверками настоящего admin API. Внутренние функции библиотек не подменяются. Здесь проверяется создание, а не изменение партиций, сроков хранения, прав или репликации уже существующего рабочего топика.

Исходный код практикума на GitHub.