Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task Queue Service

Это простой сервис очереди задач, написанный на Go, который позволяет добавлять задачи арифметической прогрессии в очередь и асинхронно их обрабатывать. Задачи обрабатываются пулом воркеров, и вы можете получать отсортированный список задач и их статусы выполнения.

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

Сервис имеет следующие возможности:

  • Добавление Задачи: Вы можете добавлять задачи арифметической прогрессии в очередь, отправляя POST-запрос на эндпоинт /add. Задача будет обработана сервисом асинхронно.
  • Список Задач: Вы можете получать отсортированный список задач и их статусы выполнения, отправляя GET-запрос на эндпоинт /list.
  • Обработка Задач: Задачи обрабатываются пулом воркеров. Вы можете указать количество воркеров (N) при запуске сервиса.
  • Очистка Результатов: После завершения задачи ее результат временно сохраняется с учетом времени жизни (TTL). По истечении TTL результат автоматически удаляется.

Запуск сервиса

  1. Клонируйте этот репозиторий: git clone https://github.com/AlexandrTomashevich/Task_Queue_Service.git
  2. Перейдите в директорию проекта: cd task-queue-service
  3. Соберите проект: go build
  4. Запустите сервис с желаемым количеством воркеров (N): (по default значение = 5) ./task-queue-service -N

Отправка и получение результата запроса (тестирование)

Чтобы добавить задачу в очередь, отправьте POST-запрос на эндпоинт /add с JSON-параметрами задачи. Вот пример с использованием curl: curl -X POST -d '{"N": 5, "D": 2, "N1": 1, "I": 0.5, "TTL": "10s"}' http://localhost:8000/add

  • N: Количество итераций в арифметической прогрессии.
  • D: Разница между каждым членом прогрессии.
  • N1: Первый член прогрессии.
  • I: Интервал времени между каждой итерацией (в секундах).
  • TTL: Время жизни результата.

Чтобы получить список задач и их статусы выполнения, отправьте GET-запрос на эндпоинт /list. Вот пример с использованием curl: curl http://localhost:8000/list

Ответ будет представлять собой JSON-массив с отсортированным списком задач и их статусами.

Пример ответа

Image screen

Зависимости

  • sync: Для управления конкурентностью.
  • sync/atomic: Для атомарных операций.
  • time: Для работы с временем.
  • encoding/json: Для кодирования и декодирования данных JSON.
  • net/http: Для создания HTTP-сервера.

About

Масштабируемый и асинхронный сервис очереди задач на Go.


Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages