By default, all stages of the flow are performed on the same actor, you can note that the stages must be performed on a separate dispatcher using attributes, for example:
stage.withAttributes(ActorAttributes.dispatcher("dispatcher-name"))
It will also introduce asynchronous borders around this stage, effectively running it in its own actor. To avoid having an asynchronous border become expensive, the scene will now actually send demand for 16 elements at the same time from the upstream, so this is what you should be aware of.
The buffer size can be changed using an additional attribute, in which case it will behave like fused steps, since it requests one element at a time, please note that this can lead to too much cost, depending on the use case.
stage.withAttributes(Attributes.inputBuffer(1, 1))
Relevant parts of documents:
source share