Scala 保持传递给分块请求实体的源的物化值(客户端)
Akka HTTP客户端API允许将Scala 保持传递给分块请求实体的源的物化值(客户端),scala,akka,akka-stream,akka-http,Scala,Akka,Akka Stream,Akka Http,Akka HTTP客户端API允许将源[ChunkStreamPart,Any]传递给HttpEntity.Chunked,这使得通过测试环将流推送到一个带有背压处理的HTTP请求中成为可能: val数据:源[ByteString,Future[重要信息]] val chunkedEntity=HttpEntity.Chunked( ContentTypes.`application/octet stream`, data.map(ChunkStreamPart())) val请求=HttpRe
源[ChunkStreamPart,Any]
传递给HttpEntity.Chunked
,这使得通过测试环将流推送到一个带有背压处理的HTTP请求中成为可能:
val数据:源[ByteString,Future[重要信息]]
val chunkedEntity=HttpEntity.Chunked(
ContentTypes.`application/octet stream`,
data.map(ChunkStreamPart()))
val请求=HttpRequest(HttpMethods.POST,
Uri(“http://targethost/path“”,实体=chunkedEntity)
val downstreamResp:Future[HttpResponse]=Http().singleRequest(请求)
现在,源代码在传输层的底层被消耗掉了,我无法找到从我的源代码中访问未来[重要信息]
物化值的方法。有没有办法解决这个问题,也就是说,有没有一种方法可以让我访问具体化的值,或者甚至是库中的某种接收器
,通过testring将流
接收器到单个HTTP请求中?如果您不需要指定重要信息
,只想知道源
何时接收到终止消息,则可以使用。这将实现一个未来的[Done]
有一个很好的例子。如果您不需要指定重要信息
,只想知道源
何时收到终止消息,那么您可以使用。这将实现一个未来的[Done]
有一个很好的例子。您可以在源代码上使用来访问其物化值
val data: Source[ByteString, Future[ImportantInformation]]
val mappeddata =
data.mapMaterializedValue(future => processImportantInformation(future))
您可以在源上使用来访问其物化值
val data: Source[ByteString, Future[ImportantInformation]]
val mappeddata =
data.mapMaterializedValue(future => processImportantInformation(future))
嗨,雷蒙,不幸的是,我确实需要获得重要信息
。我查看了链接的示例,但似乎watchTermination
和Sink.actorRef
(因为它只接受静态终止消息)都不允许我访问它。你有什么办法来避免这种情况吗?嗨,雷蒙,不幸的是,我确实需要得到重要信息
。我查看了链接的示例,但似乎watchTermination
和Sink.actorRef
(因为它只接受静态终止消息)都不允许我访问它。你有什么办法来避免这种情况吗?谢谢!这适用于我们的一个案例。在另一个示例中,我们使用Sink.asppublisher()
运行源代码,然后将source.fromPublisher()
传递到RequestEntity
,从而也可以访问具体化的值。谢谢!这适用于我们的一个案例。在另一个示例中,我们使用Sink.asppublisher()
运行源代码,然后将source.fromPublisher()
传递到RequestEntity
,从而也可以访问物化值。