2016-09-29 48 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