Написать сервис, который считает арифметическую прогрессию в очереди. Задачи поступают в очередь, из очереди поступют на выполнение, выполняются до получения результата, после чего из очереди выбирается следующая задача. Параллельно может выполняться N задач.
Нужно создать github репозиторий и в нем разместить приложение. При запуске стартует HTTP-сервер, у сервера есть два endpointa:
- Поставить задачу в очередь. Параметры:
- n - количество элементов (целочисленное)
- d - дельта между элементами последовательности (вещественное)
- n1 - Стартовое значение (вещественное)
- I - интервал в секундах между итерациями (вещественное)
- TTL - время хранения результата в секундах (вещественное)
- Получить отсортированный список задач и статусы выполнения этих задач. Поля результата для каждой задачи:
- Номер в очереди (целочисленное)
- Статус: В процессе/В очереди/Завершена
- n
- d
- n1
- I
- TTL
- Текущая итерация
- Время постановки задачи
- Время старта задачи
- Время окончания задачи (в случае если задача завершена)
- Отработанные задачи стирать после завершения TTL;
- В качестве хранения данных использовать память;
- Вычисление текущего значения должно высчитываться от предыдущего значения по факту наступления времени (по интервалу), а не по формуле разницы времени и количеству итераций;
- Параллельно может выполняться только N задач. Количество N передается через параметры командной строки сервиса.
Q:TTL для всех задач одинаковый или передается в параметрах запроса на эндпоинт?
A: Одинаковый
Q: По какому параметру нужен отсортировать список задач?
A: Время поступления задачи на обработку
Q: "Отработанные задачи стирать после завершения TTL" Верно ли, что если задача не решена, а TTL истек, она также должна быть удалена?
A: Да, задача удаляется и не возвращается ни в одном запросе
Запустить можно с тремя параметрами:
--workersNum -w Количество воркеров, по умолчанию равно количеству процессоров
--host -h Имя хоста. По умолчанию значение из файла конфига
--port -p Номер порта. По умолчанию значение из файла конфига