Skip to content

cryinTom/parallel-tasks-execution

Repository files navigation

Parallel Tasks Execution

Описание проекта

Данный проект реализует механизм параллельных обработчиков, использующих общую базу данных для хранения заданий. Каждый обработчик получает из БД 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

Для запуска выполните команду:

docker-compose up --build -d

Это запустит:

  • Два обработчика задач на портах, указанных в .env (PORT и PORT2)
  • PostgreSQL базу данных на порту 5434

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published