Практикум: кто создаёт топик Kafka¶
Создание топиков из статьи.
Нужен работающий Docker. Выполните команду из
docs/blog/lab/2026-09-07-topics-on-startup в клоне репозитория:
Скрипт импортирует код статьи и общие функции из
практикума про клиентов;
соседняя директория должна быть на месте.
В зависимостях закреплены 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. Внутренние функции библиотек
не подменяются. Здесь проверяется создание, а не изменение партиций, сроков хранения,
прав или репликации уже существующего рабочего топика.