【问题标题】:How to stream the response of dispatcher?如何流式传输调度程序的响应?
【发布时间】:2019-08-02 12:39:39
【问题描述】:

我必须导出 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

但它没有答案。

谢谢,我们将不胜感激。

【问题讨论】:

    标签: scala http streaming scala-dispatch


    【解决方案1】:

    经过大量搜索,我将其读取为输入流并转换为 Akka 流。它对我有用。

    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)
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 1970-01-01
      • 2016-12-11
      • 2018-02-19
      • 2014-11-11
      • 1970-01-01
      • 2012-09-05
      • 2016-01-31
      • 1970-01-01
      相关资源
      最近更新 更多