Создание рабочих весной - PullRequest
0 голосов
/ 23 января 2019

Я пишу веб-сервер с пружиной (mvc, data, security), который обслуживает задачи для физических устройств (количество устройств составляет около 100).Устройство не имеет реализации запроса внутри.Например, для выполнения какой-то задачи вам нужно написать что-то вроде этого:

Device driver = new DeviceDriver();
driver.setSettings(settingsJson);
driver.open(); // noone else can't connect to this device, open() can take up to 1 second
driver.setTask(taskJson);
driver.processTask(); // each task takes a few seconds to execute
String results = driver.getResults();
driver.close();

Я не очень разбираюсь в проектировании архитектуры, поэтому на данный момент реализован веб-сервер, подобный этому:

TaskController (@ RestController) - обрабатывает входящие запросы Post с задачами и сохраняет их в базе данных.

DeviceService (@ Service) - имеет метод init, который получает список устройств из БД и создает / запускает одного работника на устройство.Он передает taskRepository каждому работнику, поэтому рабочий внутри может сохранять результаты задач.

Работник - расширяет Поток , он получает следующую задачу из базы данных с определенным периодом (черезкругом со сном).Когда выполненная задача работник сохраняет результат в БД и обновляет статус задачи.

Имеет ли такой подход какой-либо смысл?Может быть, есть лучший способ сделать это, используя пружинные компоненты вместо резьбы.

1 Ответ

0 голосов
/ 23 января 2019

Я бы не создавал рабочих для каждого устройства (клиента).Потому что ваш контроллер сможет обслуживать параллельные запросы, развертываемые на сервере, основанном на потоке на запрос.Кроме того, это вообще не масштабируется - что, если на борту установлено новое устройство?Вам нужно внести изменения в базу данных, перезапустить службу с текущим дизайном !!

Если вам нужны специфические для устройства действия, вы можете просто передать их в параметры запроса от клиента устройства.Поэтому нет необходимости сохранять заранее определенный набор рабочих.

Таким образом, дизайн выглядит хорошо, за исключением рабочего набора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...