Используйте Dispatcher с Spray HttpService

В моем приложении есть API, использующий SprayCan. В приложении любой блокирующий код имеет отдельный диспетчер для каждого конкретного ресурса.

Нужно ли защищать службу API от блокировки приложением, настроив ее также с помощью собственного Диспетчера?

Также является ли обычной практикой использование маршрутизатора для службы API для обработки запросов большей емкости?

 class MyService extends Actor with HttpService {...}

 val service = system.actorOf(MyService.props(...).withDispatcher(???))

person user2827214    schedule 15.12.2015    source источник


Ответы (1)


Нужно ли защищать службу API от блокировки приложением, настроив ее также с помощью собственного Диспетчера?

Обычно не требуется. Проверьте reference.conf, который входит в конфигурацию Spray по умолчанию, чтобы увидеть, удовлетворит ли этот диспетчер ваши потребности. Если нет, предоставьте пользовательский.

Также является ли обычной практикой использование маршрутизатора для службы API для обработки запросов большей емкости?

Обычно запросы передаются другому Актеру для разблокировки маршрута или выполняются как Future (возможно, в отдельном пуле потоков). Посмотреть все доступные варианты можно здесь: Как spray.routing.HttpService отправляет запросы?.

Наконец, вы не должны блокировать обработчик маршрута, потому что он заблокирует вашу службу. Судя по вашему описанию, ваш код блокировки работает в Future или подобном. Пока это не заставляет обработчик маршрута ждать результата/блока, все в порядке.

person yǝsʞǝla    schedule 16.12.2015