Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Сервис создания задач для различных типов роботов через REST API интерфейс. Трекер активности (Manager) распределяет задачи либо одному роботу, либо всем роботам сразу, а также отслеживает доступность роботов.


Особенности

  • Обработка задач двух типов: SINGLE (выполнение одним роботом) и BROADCAST (выполнение всеми доступными типами роботов)
  • Две категории действий: DO_WORK (выполнение работы) и SHUT_DOWN (выключение робота)
  • Автоматическое создание менеджером новых роботов нужного типа при необходимости
  • Робот выполняет задачи в своем потоке
  • Потокобезопасные коллекции для работы в многопоточном окружении
  • Планировщик запускает проверку очереди задач каждые 500 мс
  • Лог динамически выкладывается на Web UI

Назначение задач

Способ выполнения задачи

Task Type Описание
SINGLE Назначить задачу одному роботу указанного типа
BROADCAST Назначить задачу всем роботам каждого типа

Полезное действие

Action Type Поведение
DO_WORK Выполнить работу. Если нет свободного робота — создать нового
SHUT_DOWN Выключить робота и удалить его из списка доступных

Публичный API

Endpoint HTTP Method Description
/api/tasks/broadcast POST Отправка задачи всем роботам
/api/tasks/single POST Отправка задачи одному роботу указанного типа
/api/logs/stream GET Подписка на стрим логов
/api/robots GET Получение свободных роботов

Архитектура

Хранилища

  • taskQueue (LinkedBlockingQueue)
    Очередь входящих задач

  • robots (EnumMap<Robot.Type, BlockingQueue>)
    Отдельная очередь для каждого типа робота

  • availableRobotMap (ConcurrentHashMap<String, Robot>)
    Отображение «ключ → робот» для быстрого получения списка доступных роботов

Планировщик

Метод manageWork() с аннотацией @Scheduled(fixedDelay = 500) выполняется каждые 500 мс. Он:

  1. Проверяет наличие задач в taskQueue
  2. Извлекает задачу и, в зависимости от её типа (SINGLE или BROADCAST), направляет в соответствующий обработчик

Запуск проекта

  1. Выполнить в корне проекта:
mvn spring-boot:run
  1. Перейти на Web UI
http://localhost:8080/tasks

Стек

  • Java 21
  • Spring Boot
  • Maven

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages