Invoke a given procedure asynchronously for each element received.

Sink operators




Invoke a given procedure asynchronously for each element received. Note that if shared state is mutated from the procedure that must be done in a thread-safe way.

The sink materializes into a Future[Done] CompletionStage<Done> which completes when the stream completes, or fails if the stream fails.

See also:

  • foreach Invoke a given procedure for each element received.
  • actorRef Send the elements from the stream to an ActorRef.


source//def asyncProcessing(value: Int): Future[Unit] = _

Source(1 to 100).runWith(Sink.foreachAsync(10)(asyncProcessing))
source// final Function<Integer, CompletionStage<Void>> asyncProcessing = _

final Source<Integer, NotUsed> numberSource = Source.range(1, 100);

numberSource.runWith(Sink.foreachAsync(10, asyncProcessing), system);

Reactive Streams semantics

cancels when a Future CompletionStage fails

backpressures when the number of Futures CompletionStages reaches the configured parallelism

Found an error in this documentation? The source code for this page can be found here. Please feel free to edit and contribute a pull request.