Репозиторий является простейшим монорепо с двумя микросервисами на фреймворке NestJS.
Микросервис api
при получении GET-запроса на эндпоинт /api/ping
отправляет ping
сообщение со временем запроса в очередь RabbitMQ и ждёт ответа.
Затем микросервис processor
обрабатывает ping
сообщение, ждёт 3 секунды и возвращает в ответ время ответа с дельтой времени.
Если микросервис api
не получит ответ в течении 10 секунд, то клиенту отправляется ошибка "таймаут запроса".
2023-07-30.025514.mp4
В рамках выполнения тестового задания требуется разработать механизм асинхронной обработки HTTP запросов и опубликовать исходники проекта на Github для дальнейшего анализа и проверки. Время на выполнения задания: 3 дня.
- Требуется разработать механизм асинхронной обработки HTTP запросов
- Требуется использовать стек NodeJS, RabbitMQ
- Требуется оформить в виде репозитория на Github
- Требуется приложить инструкцию по локальному развертыванию проекта
- Требуется реализовать логирование для целей отладки и мониторинга
- Требуется разработать микросервис М1 для обработки входящих HTTP запросов
- Требуется разработать микросервис М2 для обработки заданий из RabbitMQ
- Получаем HTTP запрос на уровне микросервиса М1.
- Транслируем HTTP запрос в очередь RabbitMQ. Запрос трансформируется в задание.
- Обрабатываем задание микросервисом М2 из очереди RabbitMQ.
- Помещаем результат обработки задания в RabbitMQ.
- Возвращаем результат HTTP запроса как результат выполнения задания из RabbitMQ.
- Запустите RabbitMQ с помощью Docker или systemd, или другим способом
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management
- Склонируйте репозиторий
git clone git@github.com:Bizzonium/test-assigment-green-api.git
- Перейдите в директорую
cd test-assigment-green-api
- Установите зависимости
pnpm install -r
- Запустите параллельно микросервисы api и processor в dev-режиме.
Также можно запускать через debug (F5) в VS Code.
pnpm start:dev