Проектная лаборатория
Собственная Kafka
Этап 20 · Отправка сообщений
Ответ для неверного топика или раздела
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы реализуете ответ Produce для неверных топиков или разделов.
Ответ API Produce для неверного топика или раздела
Получив запрос Produce, брокер Kafka должен проверить существование топика и раздела. Если хотя бы один из них не существует, брокер возвращает соответствующий ответ с кодом ошибки.
На этом этапе ответ с ошибкой можно жёстко задать: считайте все запросы Produce запросами к неверным топикам или разделам и возвращайте код 3 (UNKNOWN_TOPIC_OR_PARTITION). На следующем этапе вы реализуете успешные ответы.
Мы создали интерактивный обозреватель структуры запросов и ответов Produce:
Тесты
Тестирующая система запустит вашу программу следующим образом:
$ ./your_program.sh /tmp/server.propertiesЗатем подключится к серверу на порту 9092 и отправит два запроса Produce (v11): первый — для существующего топика с неверным разделом, второй — для неверного топика.
Для ответов на оба запроса она проверит, что:
- Первые 4 байта ответа («длина сообщения») корректны.
- Идентификатор корреляции в заголовке ответа совпадает с идентификатором в заголовке запроса.
- Поле
throttle_time_msответа равно0. - Поле
topicsсодержит 1 элемент, в котором:- Поле
nameсовпадает с именем топика в запросе. - Поле
partitionsсодержит 1 элемент, в котором:- Поле
error_codeравно3(UNKNOWN_TOPIC_OR_PARTITION). - Поле
indexсовпадает с разделом в запросе. - Поле
base_offsetравно-1. - Поле
log_append_time_msравно-1. - Поле
log_start_offsetравно-1.
- Поле
- Поле
Примечания
- На этом этапе нужно разобрать запрос
Produce, чтобы получить имя топика и раздел для ответа. - Пока ответ с ошибкой можно жёстко задать. Реальной проверкой существования топиков и разделов мы займёмся позже.
- Официальная документация API
Produceнаходится здесь. Прокрутите до раздела «(Version: 11)».
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init kafka ./my-kafka --language go2. Откройте папку в IDE
cd ./my-kafkaРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage zf2Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.