2016-09-29 78 views
2

我收到来自Kafka反应流消费者的Bytestring文件;我想用这个Bytestring构造一个akka-http请求作为实体HttpEntity.Default。 HttpEntity.Default需要Source [Bytestring,Any]作为其参数之一。如何将字节串转换为源[字节串,任意]

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

回答

2

您可以使用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请求就好了。

+0

谢谢,这肯定会奏效。有没有我可以从Kafka客户端提取源代码[Bytestring],以便我可以将来自Kafka的流链接到Akka-http:因为现在我在内存中加载了整个Bytestring,然后执行一个akka-http请求? – Rabzu

+0

对不起,我不知道,因为我从未使用过卡夫卡。但我怀疑这是可能的,至少,我看到了一些非常喜欢它的东西[in reactive-kafka](http://doc.akka.io/docs/akka-stream-kafka/current/consumer.html#connecting-producer消费者)文档。你可能应该询问另一个问题。 –

+0

因为文件大小已知,所以使用HttpEntity.Default – Rabzu