小编Str*_*s K的帖子

Scala 和 Akka HTTP:请求中的请求和线程问题

我刚开始学习 Scala、Akka Streams 和 Akka HTTP,所以如果问题太基本,请提前道歉。

我想在 HTTP 请求中执行一个 HTTP 请求,就像在下面的一段代码中一样:

  implicit val system = ActorSystem("ActorSystem")
  implicit val materializer = ActorMaterializer
  import system.dispatcher

  val requestHandler: Flow[HttpRequest, HttpResponse, _] = Flow[HttpRequest].map {
    case HttpRequest(HttpMethods.GET, Uri.Path("/api"), _, _, _) =>
      val responseFuture = Http().singleRequest(HttpRequest(uri = "http://www.google.com"))
      responseFuture.onComplete {
        case Success(response) =>
          response.discardEntityBytes()
          println(s"The request was successful")
        case Failure(ex) =>
          println(s"The request failed with: $ex")
      }
      //Await.result(responseFuture, 10 seconds)
      println("Reached HttpResponse")
      HttpResponse(
        StatusCodes.OK
      )
  }

  Http().bindAndHandle(requestHandler, "localhost", 8080)  
Run Code Online (Sandbox Code Playgroud)

但在上述情况下,结果如下所示,这意味着Reached HttpResponse在完成请求之前首先到达:

Reached …
Run Code Online (Sandbox Code Playgroud)

scala httpresponse httprequest akka-stream akka-http

5
推荐指数
1
解决办法
252
查看次数