【问题标题】:How to transform Bytestring to Source[Bytestring, Any]如何将 Bytestring 转换为 Source[Bytestring, Any]
【发布时间】:2017-02-07 11:31:51
【问题描述】:

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

将两者联系起来的最佳方式是什么?

【问题讨论】:

    标签: scala akka-stream akka-http reactive-kafka


    【解决方案1】:

    你可以使用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)
    

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

    【讨论】:

    • 谢谢,这肯定行得通。有没有我可以从 Kafka 消费者客户端提取 Source[Bytestring] 以便我可以将流从 Kafka 链接到 Akka-http:因为现在我将整个 Bytestring 加载到内存中,然后执行 akka-http 请求?
    • 对不起,我不知道,因为我从未使用过 Kafka。但我怀疑这是可能的,至少,我看到了非常相似的东西in reactive-kafka docs。你可能应该问另一个问题。
    • 我使用 HttpEntity.Default 因为文件大小是已知的
    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多