задержка в запросе попадания из спрей пользовательского интерфейса - PullRequest
0 голосов
/ 11 марта 2020

Я новичок в scala и спрей. Я написал API, который внутренне попадает на другой сервер. Я использую спрей-клиент, чтобы поразить другой сервер. Вот что я делаю:

pathPrefix("complete") {
    post {
        entity(as[completeRequest]) { completeRequest =>
            complete {
                    completeService(completeRequest)
            }
        }
    }
}

В методе completeService () я вызываю API другого сервера. Примерно так:

def completeService(completeRequest: CompleteRequest): Future[HttpResponse] = {

    val pipeline: HttpRequest => Future[HttpResponse] = sendReceive ~> unmarshal[HttpResponse]
    val response: Future[HttpResponse] = pipeline(Post(someremoteUrl.concat("complete"), completeRequest)
      ~> addHeader("demo", "test"))
    response
}

Теперь для первого запроса API 3/4 он работает быстрее. Но после этого запрос API занимает ровно 22 секунды. Я запустил приложение в DEBUG и обнаружил, что оно создает TCP-соединение для подключения к хосту, и для его завершения требуется время. Вот журналы:

home - 2020-03-15 19:05:31.581 IST [INFO] c.c.d.a.AuthenticationLoggingActor - User 94356617-9ebb-3951-b621-4fc586d376fd authenticated with account a6f0d1e0-7139-4942-9335-20ec8a6f88c7
home - 2020-03-15 19:05:31.590 IST [DEBUG] c.c.darkroom.actors.ServiceActor - Complete request is: {"sentence":"list"} 
home - 2020-03-15 19:05:31.591 IST [DEBUG] s.can.client.HttpHostConnectionSlot - Attempting new connection to some-host-url:31787
home - 2020-03-15 19:05:31.591 IST [DEBUG] s.can.client.HttpClientConnection - Attempting connection to some-host-url/some-host-ip:31787
home - undefined - 2020-03-15 19:05:31.592 IST [DEBUG] akka.io.TcpOutgoingConnection - Attempting connection to [some-host-url/some-host-ip:31787]
home - undefined - 2020-03-15 19:05:31.840 IST [DEBUG] akka.io.TcpOutgoingConnection - Connection established to [some-host-url/some-host-ip:31787]
home - undefined - 2020-03-15 19:05:31.840 IST [DEBUG] s.can.client.HttpClientConnection - Connected to some-host-url/some-host-ip:31787
home - undefined - 2020-03-15 19:05:31.840 IST [DEBUG] s.can.client.HttpHostConnectionSlot - Connection to some-host-url:31787 established, dispatching 1 pending requests
home - undefined - 2020-03-15 19:05:31.840 IST [DEBUG] s.can.client.HttpHostConnectionSlot - Dispatching POST request to /complete across connection Actor[akka://darkroom-app/user/IO-HTTP/group-0/3#871440989]
home - 2020-03-15 19:05:34.363 IST [DEBUG] s.can.client.HttpHostConnectionSlot - Delivering 200 OK response for POST request to /complete
home - undefined - 2020-03-15 19:05:34.363 IST [DEBUG] s.can.client.HttpClientConnection - Connection was Closed, awaiting TcpConnection termination...
home - undefined - 2020-03-15 19:05:34.364 IST [DEBUG] s.can.client.HttpClientConnection - TcpConnection terminated, stopping

Ожидается, что он должен дать ответ в миллисекундах (100 ~ 800 мс). Почему это происходит? Это из-за того, что предыдущий API не возвращен полностью или какой-то поток не уничтожен?

...