如何将 Bytestring 转换为 Source[Bytestring, Any]

How to transform Bytestring to Source[Bytestring, Any]

我从 Kafka Reactive Streams 消费者那里收到一个字节串文件;我想用这个字节串作为实体 HttpEntity.Default 构造一个 akka-http 请求。 HttpEntity.Default 需要 Source[Bytestring, Any] 作为其参数之一。

连接两者的最佳方式是什么?

您可以使用 Source.single:

HttpEntity.Default(
  ContentTypes.`application/octet-stream`,
  byteString.size,
  Source.single(byteString)
)

也就是说,您真的确定您确实需要 HttpEntity.Default 吗?您可以使用 HttpEntity.apply(ContentType, ByteString) 方法直接从 ByteString:

构造实体
HttpEntity(ContentTypes.`application/octet-stream`, byteString)

它 returns 是 HttpEntity.Strict 而不是 HttpEntity.Default 的实例,但是 Strict 可以很好地用于发送 HTTP 请求。