Class EntityStreamingSupport
- Direct Known Subclasses:
- CsvEntityStreamingSupport,- JsonEntityStreamingSupport
 See JsonEntityStreamingSupport or CsvEntityStreamingSupport for default implementations.
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionabstract ContentTypeWrite-side, defines what Content-Type the Marshaller should offer and the final Content-Type of the response.static CsvEntityStreamingSupportcsv()Defaulttext/csv(UTF-8)entity streaming support.static CsvEntityStreamingSupportcsv(int maxLineLength) Defaulttext/csv(UTF-8)entity streaming support.abstract org.apache.pekko.stream.scaladsl.Flow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString, org.apache.pekko.NotUsed> Read-side, decode incoming framed entity.abstract org.apache.pekko.stream.scaladsl.Flow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString, org.apache.pekko.NotUsed> Write-side, apply framing to outgoing entity stream.final org.apache.pekko.stream.javadsl.Flow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString, org.apache.pekko.NotUsed> Read-side, decode incoming framed entity.final org.apache.pekko.stream.javadsl.Flow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString, org.apache.pekko.NotUsed> Write-side, apply framing to outgoing entity stream.static JsonEntityStreamingSupportjson()Defaultapplication/jsonentity streaming support.static JsonEntityStreamingSupportjson(int maxObjectLength) Defaultapplication/jsonentity streaming support.abstract intWrite-side / read-side, defines if (un)marshalling should be done in parallel.abstract ContentTypeRangeRead-side, what content types it is able to frame and unmarshall.abstract booleanWrite-side / read-side, defines if (un)marshalling should preserve ordering of incoming stream elements.abstract EntityStreamingSupportwithContentType(ContentType range) Write-side, defines what Content-Type the Marshaller should offer and the final Content-Type of the response.abstract EntityStreamingSupportwithParallelMarshalling(int parallelism, boolean unordered) Write-side / read-side, defines parallelism and if ordering should be preserved or not of Source element marshalling.abstract EntityStreamingSupportwithSupported(ContentTypeRange range) Read-side, allows changing what content types are accepted by this framing.
- 
Constructor Details- 
EntityStreamingSupportpublic EntityStreamingSupport()
 
- 
- 
Method Details- 
jsonDefaultapplication/jsonentity streaming support.Provides framing (based on scanning the incoming dataBytes for valid JSON objects, so for example uploads using arrays or new-line separated JSON objects are all parsed correctly) and rendering of Sources as JSON Arrays. A different very popular style of returning streaming JSON is to separate JSON objects on a line-by-line basis, you can configure the support trait to do so by calling withFramingRendererFlow.Limits the maximum JSON object length to 8KB, if you want to increase this limit provide a value explicitly. - Returns:
- (undocumented)
 
- 
jsonDefaultapplication/jsonentity streaming support.Provides framing (based on scanning the incoming dataBytes for valid JSON objects, so for example uploads using arrays or new-line separated JSON objects are all parsed correctly) and rendering of Sources as JSON Arrays. A different very popular style of returning streaming JSON is to separate JSON objects on a line-by-line basis, you can configure the support trait to do so by calling withFramingRendererFlow.- Parameters:
- maxObjectLength- (undocumented)
- Returns:
- (undocumented)
 
- 
csvDefaulttext/csv(UTF-8)entity streaming support. Provides framing and rendering of\nseparated lines and marshalling Sources into such values.Limits the maximum line-length to 8KB, if you want to increase this limit provide a value explicitly. - Returns:
- (undocumented)
 
- 
csvDefaulttext/csv(UTF-8)entity streaming support. Provides framing and rendering of\nseparated lines and marshalling Sources into such values.- Parameters:
- maxLineLength- (undocumented)
- Returns:
- (undocumented)
 
- 
supportedRead-side, what content types it is able to frame and unmarshall.- Specified by:
- supportedin class- EntityStreamingSupport
 
- 
contentTypeWrite-side, defines what Content-Type the Marshaller should offer and the final Content-Type of the response.- Specified by:
- contentTypein class- EntityStreamingSupport
 
- 
framingDecoderpublic abstract org.apache.pekko.stream.scaladsl.Flow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString, framingDecoder()org.apache.pekko.NotUsed> Read-side, decode incoming framed entity. For example with an incoming JSON array, chunk it up into JSON objects contained within that array.- Returns:
- (undocumented)
 
- 
getFramingDecoderpublic final org.apache.pekko.stream.javadsl.Flow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString, getFramingDecoder()org.apache.pekko.NotUsed> Description copied from class:EntityStreamingSupportRead-side, decode incoming framed entity. For example with an incoming JSON array, chunk it up into JSON objects contained within that array.- Specified by:
- getFramingDecoderin class- EntityStreamingSupport
- Returns:
- (undocumented)
 
- 
framingRendererpublic abstract org.apache.pekko.stream.scaladsl.Flow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString, framingRenderer()org.apache.pekko.NotUsed> Write-side, apply framing to outgoing entity stream.Most typical usage will be a variant of Flow[ByteString].intersperse.For example for rendering a JSON array one would return Flow[ByteString].intersperse(ByteString("["), ByteString(","), ByteString("]"))and for rendering a new-line separated CSV simplyFlow[ByteString].intersperse(ByteString("\n")).- Returns:
- (undocumented)
 
- 
getFramingRendererpublic final org.apache.pekko.stream.javadsl.Flow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString, getFramingRenderer()org.apache.pekko.NotUsed> Description copied from class:EntityStreamingSupportWrite-side, apply framing to outgoing entity stream.Most typical usage will be a variant of Flow[ByteString].intersperse.For example for rendering a JSON array one would return Flow[ByteString].intersperse(ByteString("["), ByteString(","), ByteString("]"))and for rendering a new-line separated CSV simplyFlow[ByteString].intersperse(ByteString("\n")).- Specified by:
- getFramingRendererin class- EntityStreamingSupport
- Returns:
- (undocumented)
 
- 
withSupportedRead-side, allows changing what content types are accepted by this framing.EntityStreamingSupport traits MUST support re-configuring the accepted ContentTypeRange.This is in order to support a-typical APIs which users still want to communicate with using the provided support trait. Typical examples include APIs which return valid application/jsonhowever advertise the content type as beingapplication/javascriptor vendor specific content types, which still parse correctly as JSON, CSV or something else that a provided support trait is built for.NOTE: Implementations should specialize the return type to their own Type! - Specified by:
- withSupportedin class- EntityStreamingSupport
- Parameters:
- range- (undocumented)
- Returns:
- (undocumented)
 
- 
withContentTypeWrite-side, defines what Content-Type the Marshaller should offer and the final Content-Type of the response.EntityStreamingSupport traits MUST support re-configuring the offered ContentType. This is due to the need integrating with existing systems which sometimes expect custom Content-Types, however really are just plain JSON or something else internally (perhaps with slight extensions).NOTE: Implementations should specialize the return type to their own Type! - Specified by:
- withContentTypein class- EntityStreamingSupport
- Parameters:
- range- (undocumented)
- Returns:
- (undocumented)
 
- 
parallelismpublic abstract int parallelism()Write-side / read-side, defines if (un)marshalling should be done in parallel.This may be beneficial marshalling the bottleneck in the pipeline. See also parallelism()andwithParallelMarshalling(int,boolean).- Specified by:
- parallelismin class- EntityStreamingSupport
- Returns:
- (undocumented)
 
- 
unorderedpublic abstract boolean unordered()Write-side / read-side, defines if (un)marshalling should preserve ordering of incoming stream elements.Allowing for parallel and unordered (un)marshalling often yields higher throughput and also allows avoiding head-of-line blocking if some elements are much larger than others. See also parallelism()andwithParallelMarshalling(int,boolean).- Specified by:
- unorderedin class- EntityStreamingSupport
- Returns:
- (undocumented)
 
- 
withParallelMarshallingWrite-side / read-side, defines parallelism and if ordering should be preserved or not of Source element marshalling.Sometimes marshalling multiple elements at once (esp. when elements are not evenly sized, and ordering is not enforced) may yield in higher throughput. NOTE: Implementations should specialize the return type to their own Type! - Specified by:
- withParallelMarshallingin class- EntityStreamingSupport
- Parameters:
- parallelism- (undocumented)
- unordered- (undocumented)
- Returns:
- (undocumented)
 
 
-