Это простой сервис очереди задач, написанный на Go, который позволяет добавлять задачи арифметической прогрессии в очередь и асинхронно их обрабатывать. Задачи обрабатываются пулом воркеров, и вы можете получать отсортированный список задач и их статусы выполнения.
Сервис имеет следующие возможности:
- Добавление Задачи: Вы можете добавлять задачи арифметической прогрессии в очередь, отправляя POST-запрос на эндпоинт /add. Задача будет обработана сервисом асинхронно.
- Список Задач: Вы можете получать отсортированный список задач и их статусы выполнения, отправляя GET-запрос на эндпоинт /list.
- Обработка Задач: Задачи обрабатываются пулом воркеров. Вы можете указать количество воркеров (N) при запуске сервиса.
- Очистка Результатов: После завершения задачи ее результат временно сохраняется с учетом времени жизни (TTL). По истечении TTL результат автоматически удаляется.
- Клонируйте этот репозиторий: git clone https://github.com/AlexandrTomashevich/Task_Queue_Service.git
- Перейдите в директорию проекта: cd task-queue-service
- Соберите проект: go build
- Запустите сервис с желаемым количеством воркеров (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-массив с отсортированным списком задач и их статусами.
- sync: Для управления конкурентностью.
- sync/atomic: Для атомарных операций.
- time: Для работы с временем.
- encoding/json: Для кодирования и декодирования данных JSON.
- net/http: Для создания HTTP-сервера.