2015-12-15 3 views
1

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

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

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

class MyService extends Actor with HttpService {...} 

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

ответ

1

Нужно защитить службу API от блокировано приложения, настроив его это собственный Dispatcher тоже?

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

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

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

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

Смежные вопросы