Параллельное выполнение методов

У меня есть приложение, которое отправляет несколько запросов на мой spray-can 1.3.1 сервер.

FireBug показывает мне, что эти запросы запускаются параллельно.

Однако на сервере эти запросы обрабатываются строго последовательно.

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

Сервер запускается так:

object Server extends SimpleRoutingApp{  
  def main(args: Array[String]): Unit = {
    implicit val system = ActorSystem()
    startServer("0.0.0.0", port = 8080) {
      get{
        pathSingleSlash {
          complete{
            HttpEntity(
              MediaTypes.`text/html`,
              Template.txt
            )
....

1 ответ

Решение

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

  1. С использованием Detach директива: эта директива порождает нового актера для обработки этого запроса.
  2. Использование субъекта на запрос

Вы также можете найти другие ссылки в SO об этом.

Другие вопросы по тегам