Как работать с асинхронным процессом с внешнего клиента? - PullRequest
3 голосов
/ 09 января 2020

, пожалуйста, дайте мне несколько советов о лучшем шаблоне решения задачи. Моя задача такова:

  1. Пользователь отправляет запрос процессору Camunda через собственный контроллер покоя
  2. Схема BPMN на серверной стороне состоит из цепочки из нескольких асинхронных служб
  3. Данные будут готовы для ответа Пользователю, только когда одна последняя служба в BPMN сделает это.

Каждая цепочка работает не более 10-15 секунд. А количество сеансов пользователей составляет менее 500 в час.

Как организовать работу остальных контроллеров? Допустимо ли принудительное ожидание результата контроллера в одном и том же вызове? Где узкое место?

1 Ответ

2 голосов
/ 09 января 2020

Можете ли вы использовать серверную технологию pu sh? Если бы это была всего пара секунд, я бы сказал go для ожидания в контроллере остальных.

Будучи 15 секундами и думая о масштабируемости, я бы сказал, что клиент должен следовать некоторому асинхронному шаблону.

  1. Клиент отправляет запрос на выполнение чего-либо
  2. Контроллер делегирует работу какому-либо внешнему процессу и возвращает клиенту ok
  3. Процесс заканчивается, и ответ готов.
  4. Если другой стороной является браузер, используйте какую-либо серверную технологию pu sh для уведомления об этом. Если это приложение, используйте для связи какой-либо rp c, опрос или любой другой механизм межпроцессного взаимодействия.

Обратите внимание, что в зависимости от технологии хостинга существуют различные ограничения для одновременных подключений. Проверьте Spring Boot - ограничение на количество созданных соединений для tomcat.

...