如何流式传输调度员的响应?
How to stream the response of dispatcher?
我必须导出 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
但是没有答案。
谢谢,我们将不胜感激。
经过多方搜索,我将其作为输入流读取并转换为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)
}
}
我必须导出 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
但是没有答案。
谢谢,我们将不胜感激。
经过多方搜索,我将其作为输入流读取并转换为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)
}
}