Scala 保持传递给分块请求实体的源的物化值(客户端)

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

Akka HTTP客户端API允许将
源[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
,从而也可以访问物化值。