2016-07-05 5 views
0

akka-httpをこのように使用すると、乱用されたり、何とか危険ですか?akka httpチャンクレスレスポンスを使用したJSONオブジェクトのストリーミング

Source.single(HttpRequest("http://localhost:9000/stream")) 
    .mapAsync(1) { r => 
    Http().singleRequest(r).map { res => 
     res.entity.dataBytes.map(_.parse[Event]) 
    } 
    } 
    .flatMapConcat(identity).mapAsync(processEvent) 

UPDその後

def source(consumerOffset: UUID) = readJournal.eventsByTag(“MyTag", consumerOffset).map(_.asJson) pathPrefix("stream"/Segment.map(UUID.fromString)) { offset => pathEndOrSingleSlash { get { complete { HttpResponse( StatusCodes.OK, entity = HttpEntity(ContentTypes.`application/json`, source(offset)) ) } } } } 

サーバー上でクライアント側の

  1. はそれが私が送信チャンクは、クライアント側で同じであることが保証されます。
  2. 無限のチャンクで応答するのはいいですか?
  3. この種類の応答に適したContent-Typeは何ですか?

UPD 2:

アッカ2.4.9は、ストリームで応答する機能が追加されました。基本的にはまったく同じことですが、シンタックスシュガーを提供しています。 docsを参照してください。順序であなたの質問に答える

+0

あなたはどちらについて心配ですか?一見したところ、ボイラプラッターのようです... –

+0

1.私が送るチャンクはクライアント側で同じになることが保証されていますか? –

+0

2.無限のチャンクで応答するのはいいですか? –

答えて

1

  1. はい、クライアントはJSONでエンコードされたあなたのオブジェクトのBytesString表現を受け取ることになります。
  2. はい、決して終了しないサーバー側にストリームソースを持つことは問題ありません。
  3. 質問(application/json)で指定した内容が正しいです。
関連する問題