Данный проект реализует механизм параллельных обработчиков, использующих общую базу данных для хранения заданий. Каждый обработчик получает из БД URL, выполняет по нему HTTP-запрос и сохраняет результат (HTTP-код ответа) обратно в таблицу.
- TypeScript – основной язык разработки
- NestJS – фреймворк для создания серверных приложений
- TypeORM – ORM для работы с базой данных
- Docker и Docker Compose – для контейнеризации и упрощённого развертывания
- Параллельное Получение задач:
МетодtakeTask()извлекает задание со статусомNEWиз базы данных. Для обеспечения уникальности обработки используется транзакция с блокировкой записи (pessimistic_write), что предотвращает одновременное выполнение одного и того же URL несколькими обработчиками.
Перед запуском необходимо создать файл .env в корневой директории проекта со следующими параметрами:
DB_HOST=main-db
DB_PORT=5432
DB_USERNAME=root
DB_PASSWORD=root
DATABASE=tasks
PORT=3002
PORT2=3003Для запуска выполните команду:
docker-compose up --build -dЭто запустит:
- Два обработчика задач на портах, указанных в .env (PORT и PORT2)
- PostgreSQL базу данных на порту 5434