如何传递调度程序的响应?

时间:2019-08-02 12:39:39

标签: scala http streaming scala-dispatch

我必须导出CSV数据。数据量非常大。因此,我正在流式传输来自微服务的响应。 我们使用调度程序来实现微服务。

def stream(method: String, urlString: String): Future[Source[ByteString, NotUsed]] =
    method match {
      case GET    =>
        val request = Http(url(urlString))
        request.map { response =>
          response.getStatusCode match {
            case StatusOk => Source.single(ByteString(response.getResponseBody))
          }
        }
    }

它将带来所有数据。因此,要解决此问题,我想对其进行修改并从此处流式传输数据。

我进行了很多搜索,发现了这个问题Scala dispatch stream response line by line

但是没有答案。

谢谢,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

经过大量搜索,我将其读取为Input stream并转换为Akka Stream。它对我有用。

def stream(method: String, urlString: String): Future[Source[ByteString, Future[IOResult]]] =
    method match {
      case GET    =>
        val futureStream = Http(url(urlString) > as.Response(_.getResponseBodyAsStream))
        futureStream.map { inputStream =>
          val source = () => inputStream
          StreamConverters.fromInputStream(source)
        }
    }