Pipelining and parallelizing streams
As seen in the previous recipes, Akka Streams provides a set of high-level APIs to process streams using actors as the underlying technology. ActorMaterializer
is responsible for making this happen. ActorMaterializer
allocates the resources and instantiates the classes required to have to turn your defined stream into a RunnableGraph
. By default, all the processing stages are combined and executed sequentially. Therefore, a stage is limited to run at most once at any given time.Â
Having a sequential execution might be desired in some scenarios; however, other use cases could benefit from parallelizing some processing tasks. Akka Streams provides a method called async
to indicate when a stage should run asynchronously and have its own internal actor. By default, all the stages not marked async
will run in a single actor. Asynchronous stages have internal buffers to make the passing of messages more efficient. This is to reduce the overhead introduced by...