Проектная лаборатория

Собственная Kafka

0 / 25этапов пройдено

Этап 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 go

2. Откройте папку в IDE

cd ./my-kafka

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage zf2

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста