Class Source$
- java.lang.Object
-
- akka.stream.scaladsl.Source$
-
public class Source$ extends java.lang.Object
INTERNAL API
-
-
Constructor Summary
Constructors Constructor Description Source$()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description <T> Source<T,ActorRef>
actorPublisher(Props props)
Deprecated.Useakka.stream.stage.GraphStage
andfromGraph
instead, it allows for all operations an Actor would and is more type-safe as well as guaranteed to be ReactiveStreams compliant.<T> Source<T,ActorRef>
actorRef(int bufferSize, OverflowStrategy overflowStrategy)
Creates aSource
that is materialized as anActorRef
.<T> Source<T,ActorRef>
actorRef(scala.PartialFunction<java.lang.Object,CompletionStrategy> completionMatcher, scala.PartialFunction<java.lang.Object,java.lang.Throwable> failureMatcher, int bufferSize, OverflowStrategy overflowStrategy)
INTERNAL API<T> Source<T,ActorRef>
actorRefWithAck(java.lang.Object ackMessage)
Creates aSource
that is materialized as anActorRef
.<T> Source<T,ActorRef>
actorRefWithAck(scala.Option<ActorRef> ackTo, java.lang.Object ackMessage, scala.PartialFunction<java.lang.Object,CompletionStrategy> completionMatcher, scala.PartialFunction<java.lang.Object,java.lang.Throwable> failureMatcher)
INTERNAL API<T> Source<T,NotUsed>
apply(scala.collection.immutable.Iterable<T> iterable)
Helper to createSource
fromIterable
.<T> Source<T,org.reactivestreams.Subscriber<T>>
asSubscriber()
Creates aSource
that is materialized as aSubscriber
<T,U>
Source<U,NotUsed>combine(Source<T,?> first, Source<T,?> second, scala.collection.Seq<Source<T,?>> rest, scala.Function1<java.lang.Object,Graph<UniformFanInShape<T,U>,NotUsed>> strategy)
Combines several sources with fan-in strategy likeMerge
orConcat
and returnsSource
.<T,U,M1,M2,M>
Source<U,M>combineMat(Source<T,M1> first, Source<T,M2> second, scala.Function1<java.lang.Object,Graph<UniformFanInShape<T,U>,NotUsed>> strategy, scala.Function2<M1,M2,M> matF)
Combines two sources with fan-in strategy likeMerge
orConcat
and returnsSource
with a materialized value.<T> Source<T,NotUsed>
cycle(scala.Function0<scala.collection.Iterator<T>> f)
CreatesSource
that will continually produce given elements in specified order.<T> Source<T,NotUsed>
empty()
ASource
with no elements, i.e.<T> Source<T,NotUsed>
failed(java.lang.Throwable cause)
Create aSource
that immediately ends the stream with thecause
error to every connectedSink
.<T> Source<T,NotUsed>
fromCompletionStage(java.util.concurrent.CompletionStage<T> future)
Starts a newSource
from the givenFuture
.<T> Source<T,NotUsed>
fromFuture(scala.concurrent.Future<T> future)
Starts a newSource
from the givenFuture
.<T,M>
Source<T,scala.concurrent.Future<M>>fromFutureSource(scala.concurrent.Future<Graph<SourceShape<T>,M>> future)
Streams the elements of the given future source once it successfully completes.<T,M>
Source<T,M>fromGraph(Graph<SourceShape<T>,M> g)
A graph with the shape of a source logically is a source, this method makes it so also in type.<T> Source<T,NotUsed>
fromIterator(scala.Function0<scala.collection.Iterator<T>> f)
Helper to createSource
fromIterator
.<T> Source<T,NotUsed>
fromPublisher(org.reactivestreams.Publisher<T> publisher)
Helper to createSource
fromPublisher
.<T,M>
Source<T,java.util.concurrent.CompletionStage<M>>fromSourceCompletionStage(java.util.concurrent.CompletionStage<? extends Graph<SourceShape<T>,M>> completion)
Streams the elements of an asynchronous source once its givencompletion
operator completes.<T,M>
Source<T,scala.concurrent.Future<M>>lazily(scala.Function0<Source<T,M>> create)
Creates aSource
that is not materialized until there is downstream demand, when the source gets materialized the materialized future is completed with its value, if downstream cancels or fails without any demand the create factory is never called and the materializedFuture
is failed.<T> Source<T,scala.concurrent.Future<NotUsed>>
lazilyAsync(scala.Function0<scala.concurrent.Future<T>> create)
Creates aSource
from supplied future factory that is not called until downstream demand.<T> Source<T,scala.concurrent.Promise<scala.Option<T>>>
maybe()
Create aSource
which materializes aPromise
which controls what element will be emitted by the Source.<T> Source<T,SourceQueueWithComplete<T>>
queue(int bufferSize, OverflowStrategy overflowStrategy)
Creates aSource
that is materialized as anSourceQueue
.<T> Source<T,NotUsed>
repeat(T element)
Create aSource
that will continually emit the given element.<T,M>
Source<T,scala.concurrent.Future<M>>setup(scala.Function2<ActorMaterializer,Attributes,Source<T,M>> factory)
Defers the creation of aSource
until materialization.<T> SourceShape<T>
shape(java.lang.String name)
<T> Source<T,NotUsed>
single(T element)
Create aSource
with one element.<T> Source<T,Cancellable>
tick(scala.concurrent.duration.FiniteDuration initialDelay, scala.concurrent.duration.FiniteDuration interval, T tick)
Elements are emitted periodically with the specified interval.<S,E>
Source<E,NotUsed>unfold(S s, scala.Function1<S,scala.Option<scala.Tuple2<S,E>>> f)
Create aSource
that will unfold a value of typeS
into a pair of the next stateS
and output elements of typeE
.<S,E>
Source<E,NotUsed>unfoldAsync(S s, scala.Function1<S,scala.concurrent.Future<scala.Option<scala.Tuple2<S,E>>>> f)
Same as<S,E>unfold(S,scala.Function1<S,scala.Option<scala.Tuple2<S,E>>>)
, but uses an async function to generate the next state-element tuple.<T,S>
Source<T,NotUsed>unfoldResource(scala.Function0<S> create, scala.Function1<S,scala.Option<T>> read, scala.Function1<S,scala.runtime.BoxedUnit> close)
Start a newSource
from some resource which can be opened, read and closed.<T,S>
Source<T,NotUsed>unfoldResourceAsync(scala.Function0<scala.concurrent.Future<S>> create, scala.Function1<S,scala.concurrent.Future<scala.Option<T>>> read, scala.Function1<S,scala.concurrent.Future<Done>> close)
Start a newSource
from some resource which can be opened, read and closed.<T> Source<scala.collection.immutable.Seq<T>,NotUsed>
zipN(scala.collection.immutable.Seq<Source<T,?>> sources)
Combine the elements of multiple streams into a stream of sequences.<T,O>
Source<O,NotUsed>zipWithN(scala.Function1<scala.collection.immutable.Seq<T>,O> zipper, scala.collection.immutable.Seq<Source<T,?>> sources)
-
-
-
Field Detail
-
MODULE$
public static final Source$ MODULE$
Static reference to the singleton instance of this Scala object.
-
-
Method Detail
-
shape
public <T> SourceShape<T> shape(java.lang.String name)
-
fromPublisher
public <T> Source<T,NotUsed> fromPublisher(org.reactivestreams.Publisher<T> publisher)
Helper to createSource
fromPublisher
.Construct a transformation starting with given publisher. The transformation steps are executed by a series of
Processor
instances that mediate the flow of elements downstream and the propagation of back-pressure upstream.- Parameters:
publisher
- (undocumented)- Returns:
- (undocumented)
-
fromIterator
public <T> Source<T,NotUsed> fromIterator(scala.Function0<scala.collection.Iterator<T>> f)
Helper to createSource
fromIterator
. Example usage:Source.fromIterator(() => Iterator.from(0))
Start a new
Source
from the given function that produces anIterator. The produced stream of elements will continue until the iterator runs empty or fails during evaluation of thenext()
method. Elements are pulled out of the iterator in accordance with the demand coming from the downstream transformation steps.- Parameters:
f
- (undocumented)- Returns:
- (undocumented)
-
cycle
public <T> Source<T,NotUsed> cycle(scala.Function0<scala.collection.Iterator<T>> f)
CreatesSource
that will continually produce given elements in specified order.Starts a new 'cycled'
Source
from the given elements. The producer stream of elements will continue infinitely by repeating the sequence of elements provided by function parameter.- Parameters:
f
- (undocumented)- Returns:
- (undocumented)
-
fromGraph
public <T,M> Source<T,M> fromGraph(Graph<SourceShape<T>,M> g)
A graph with the shape of a source logically is a source, this method makes it so also in type.- Parameters:
g
- (undocumented)- Returns:
- (undocumented)
-
setup
public <T,M> Source<T,scala.concurrent.Future<M>> setup(scala.Function2<ActorMaterializer,Attributes,Source<T,M>> factory)
Defers the creation of aSource
until materialization. Thefactory
function exposesActorMaterializer
which is going to be used during materialization andAttributes
of theSource
returned by this method.- Parameters:
factory
- (undocumented)- Returns:
- (undocumented)
-
apply
public <T> Source<T,NotUsed> apply(scala.collection.immutable.Iterable<T> iterable)
Helper to createSource
fromIterable
. Example usage:Source(Seq(1,2,3))
Starts a new
Source
from the givenIterable
. This is like starting from an Iterator, but every Subscriber directly attached to the Publisher of this stream will see an individual flow of elements (always starting from the beginning) regardless of when they subscribed.- Parameters:
iterable
- (undocumented)- Returns:
- (undocumented)
-
fromFuture
public <T> Source<T,NotUsed> fromFuture(scala.concurrent.Future<T> future)
Starts a newSource
from the givenFuture
. The stream will consist of one element when theFuture
is completed with a successful value, which may happen before or after materializing theFlow
. The stream terminates with a failure if theFuture
is completed with a failure.- Parameters:
future
- (undocumented)- Returns:
- (undocumented)
-
fromCompletionStage
public <T> Source<T,NotUsed> fromCompletionStage(java.util.concurrent.CompletionStage<T> future)
Starts a newSource
from the givenFuture
. The stream will consist of one element when theFuture
is completed with a successful value, which may happen before or after materializing theFlow
. The stream terminates with a failure if theFuture
is completed with a failure.- Parameters:
future
- (undocumented)- Returns:
- (undocumented)
-
fromFutureSource
public <T,M> Source<T,scala.concurrent.Future<M>> fromFutureSource(scala.concurrent.Future<Graph<SourceShape<T>,M>> future)
Streams the elements of the given future source once it successfully completes. If theFuture
fails the stream is failed with the exception from the future. If downstream cancels before the stream completes the materializedFuture
will be failed with aStreamDetachedException
- Parameters:
future
- (undocumented)- Returns:
- (undocumented)
-
fromSourceCompletionStage
public <T,M> Source<T,java.util.concurrent.CompletionStage<M>> fromSourceCompletionStage(java.util.concurrent.CompletionStage<? extends Graph<SourceShape<T>,M>> completion)
Streams the elements of an asynchronous source once its givencompletion
operator completes. If theCompletionStage
fails the stream is failed with the exception from the future. If downstream cancels before the stream completes the materializedFuture
will be failed with aStreamDetachedException
- Parameters:
completion
- (undocumented)- Returns:
- (undocumented)
-
tick
public <T> Source<T,Cancellable> tick(scala.concurrent.duration.FiniteDuration initialDelay, scala.concurrent.duration.FiniteDuration interval, T tick)
Elements are emitted periodically with the specified interval. The tick element will be delivered to downstream consumers that has requested any elements. If a consumer has not requested any elements at the point in time when the tick element is produced it will not receive that tick element later. It will receive new tick elements as soon as it has requested more elements.- Parameters:
initialDelay
- (undocumented)interval
- (undocumented)tick
- (undocumented)- Returns:
- (undocumented)
-
single
public <T> Source<T,NotUsed> single(T element)
Create aSource
with one element. Every connectedSink
of this stream will see an individual stream consisting of one element.- Parameters:
element
- (undocumented)- Returns:
- (undocumented)
-
repeat
public <T> Source<T,NotUsed> repeat(T element)
Create aSource
that will continually emit the given element.- Parameters:
element
- (undocumented)- Returns:
- (undocumented)
-
unfold
public <S,E> Source<E,NotUsed> unfold(S s, scala.Function1<S,scala.Option<scala.Tuple2<S,E>>> f)
Create aSource
that will unfold a value of typeS
into a pair of the next stateS
and output elements of typeE
.For example, all the Fibonacci numbers under 10M:
Source.unfold(0 -> 1) { case (a, _) if a > 10000000 => None case (a, b) => Some((b -> (a + b)) -> a) }
- Parameters:
s
- (undocumented)f
- (undocumented)- Returns:
- (undocumented)
-
unfoldAsync
public <S,E> Source<E,NotUsed> unfoldAsync(S s, scala.Function1<S,scala.concurrent.Future<scala.Option<scala.Tuple2<S,E>>>> f)
Same as<S,E>unfold(S,scala.Function1<S,scala.Option<scala.Tuple2<S,E>>>)
, but uses an async function to generate the next state-element tuple.async fibonacci example:
Source.unfoldAsync(0 -> 1) { case (a, _) if a > 10000000 => Future.successful(None) case (a, b) => Future{ Thread.sleep(1000) Some((b -> (a + b)) -> a) } }
- Parameters:
s
- (undocumented)f
- (undocumented)- Returns:
- (undocumented)
-
empty
public <T> Source<T,NotUsed> empty()
ASource
with no elements, i.e. an empty stream that is completed immediately for every connectedSink
.- Returns:
- (undocumented)
-
maybe
public <T> Source<T,scala.concurrent.Promise<scala.Option<T>>> maybe()
Create aSource
which materializes aPromise
which controls what element will be emitted by the Source. If the materialized promise is completed with a Some, that value will be produced downstream, followed by completion. If the materialized promise is completed with a None, no value will be produced downstream and completion will be signalled immediately. If the materialized promise is completed with a failure, then the returned source will terminate with that error. If the downstream of this source cancels before the promise has been completed, then the promise will be completed with None.- Returns:
- (undocumented)
-
failed
public <T> Source<T,NotUsed> failed(java.lang.Throwable cause)
Create aSource
that immediately ends the stream with thecause
error to every connectedSink
.- Parameters:
cause
- (undocumented)- Returns:
- (undocumented)
-
lazily
public <T,M> Source<T,scala.concurrent.Future<M>> lazily(scala.Function0<Source<T,M>> create)
Creates aSource
that is not materialized until there is downstream demand, when the source gets materialized the materialized future is completed with its value, if downstream cancels or fails without any demand the create factory is never called and the materializedFuture
is failed.- Parameters:
create
- (undocumented)- Returns:
- (undocumented)
-
lazilyAsync
public <T> Source<T,scala.concurrent.Future<NotUsed>> lazilyAsync(scala.Function0<scala.concurrent.Future<T>> create)
Creates aSource
from supplied future factory that is not called until downstream demand. When source gets materialized the materialized future is completed with the value from the factory. If downstream cancels or fails without any demand the create factory is never called and the materializedFuture
is failed.- Parameters:
create
- (undocumented)- Returns:
- (undocumented)
- See Also:
Source.lazily
-
asSubscriber
public <T> Source<T,org.reactivestreams.Subscriber<T>> asSubscriber()
Creates aSource
that is materialized as aSubscriber
- Returns:
- (undocumented)
-
actorPublisher
public <T> Source<T,ActorRef> actorPublisher(Props props)
Deprecated.Useakka.stream.stage.GraphStage
andfromGraph
instead, it allows for all operations an Actor would and is more type-safe as well as guaranteed to be ReactiveStreams compliant.Creates aSource
that is materialized to anActorRef
which points to an Actor created according to the passed inProps
. Actor created by theprops
must beActorPublisher
.- Parameters:
props
- (undocumented)- Returns:
- (undocumented)
-
actorRef
public <T> Source<T,ActorRef> actorRef(scala.PartialFunction<java.lang.Object,CompletionStrategy> completionMatcher, scala.PartialFunction<java.lang.Object,java.lang.Throwable> failureMatcher, int bufferSize, OverflowStrategy overflowStrategy)
INTERNAL APICreates a
Source
that is materialized as anActorRef
. Messages sent to this actor will be emitted to the stream if there is demand from downstream, otherwise they will be buffered until request for demand is received.Depending on the defined
OverflowStrategy
it might drop elements if there is no space available in the buffer.The strategy
akka.stream.OverflowStrategy.backpressure
is not supported, and an IllegalArgument("Backpressure overflowStrategy not supported") will be thrown if it is passed as argument.The buffer can be disabled by using
bufferSize
of 0 and then received messages are dropped if there is no demand from downstream. WhenbufferSize
is 0 theoverflowStrategy
does not matter. An async boundary is added after this Source; as such, it is never safe to assume the downstream will always generate demand.The stream can be completed successfully by sending the actor reference a message that is matched by
completionMatcher
in which case already buffered elements will be signaled before signaling completion.The stream can be completed with failure by sending a message that is matched by
failureMatcher
. The extractedThrowable
will be used to fail the stream. In case the Actor is still draining its internal buffer (after having received a message matched bycompletionMatcher
) before signaling completion and it receives a message matched byfailureMatcher
, the failure will be signaled downstream immediately (instead of the completion signal).Note that terminating the actor without first completing it, either with a success or a failure, will prevent the actor triggering downstream completion and the stream will continue to run even though the source actor is dead. Therefore you should **not** attempt to manually terminate the actor such as with a
PoisonPill
.The actor will be stopped when the stream is completed, failed or canceled from downstream, i.e. you can watch it to get notified when that happens.
See also
akka.stream.scaladsl.Source.queue
.- Parameters:
bufferSize
- The size of the buffer in element countoverflowStrategy
- Strategy that is used when incoming elements cannot fit inside the buffercompletionMatcher
- (undocumented)failureMatcher
- (undocumented)- Returns:
- (undocumented)
-
actorRef
public <T> Source<T,ActorRef> actorRef(int bufferSize, OverflowStrategy overflowStrategy)
Creates aSource
that is materialized as anActorRef
. Messages sent to this actor will be emitted to the stream if there is demand from downstream, otherwise they will be buffered until request for demand is received.Depending on the defined
OverflowStrategy
it might drop elements if there is no space available in the buffer.The strategy
akka.stream.OverflowStrategy.backpressure
is not supported, and an IllegalArgument("Backpressure overflowStrategy not supported") will be thrown if it is passed as argument.The buffer can be disabled by using
bufferSize
of 0 and then received messages are dropped if there is no demand from downstream. WhenbufferSize
is 0 theoverflowStrategy
does not matter. An async boundary is added after this Source; as such, it is never safe to assume the downstream will always generate demand.The stream can be completed successfully by sending the actor reference a
Status.Success
. If the content isakka.stream.CompletionStrategy.immediately
the completion will be signaled immidiately, otherwise if the content isakka.stream.CompletionStrategy.draining
(or anything else) already buffered elements will be signaled before siganling completion. SendingPoisonPill
will signal completion immediately but this behavior is deprecated and scheduled to be removed.The stream can be completed with failure by sending a
Status.Failure
to the actor reference. In case the Actor is still draining its internal buffer (after having received aStatus.Success
) before signaling completion and it receives aStatus.Failure
, the failure will be signaled downstream immediately (instead of the completion signal).The actor will be stopped when the stream is completed, failed or canceled from downstream, i.e. you can watch it to get notified when that happens.
See also
akka.stream.scaladsl.Source.queue
.- Parameters:
bufferSize
- The size of the buffer in element countoverflowStrategy
- Strategy that is used when incoming elements cannot fit inside the buffer- Returns:
- (undocumented)
-
actorRefWithAck
public <T> Source<T,ActorRef> actorRefWithAck(scala.Option<ActorRef> ackTo, java.lang.Object ackMessage, scala.PartialFunction<java.lang.Object,CompletionStrategy> completionMatcher, scala.PartialFunction<java.lang.Object,java.lang.Throwable> failureMatcher)
INTERNAL API- Parameters:
ackTo
- (undocumented)ackMessage
- (undocumented)completionMatcher
- (undocumented)failureMatcher
- (undocumented)- Returns:
- (undocumented)
-
actorRefWithAck
public <T> Source<T,ActorRef> actorRefWithAck(java.lang.Object ackMessage)
Creates aSource
that is materialized as anActorRef
. Messages sent to this actor will be emitted to the stream if there is demand from downstream, and a new message will only be accepted after the previous messages has been consumed and acknowledged back. The stream will complete with failure if a message is sent before the acknowledgement has been replied back.The stream can be completed successfully by sending the actor reference a
Status.Success
. If the content isakka.stream.CompletionStrategy.immediately
the completion will be signaled immidiately, otherwise if the content isakka.stream.CompletionStrategy.draining
(or anything else) already buffered element will be signaled before siganling completion.The stream can be completed with failure by sending a
Status.Failure
to the actor reference. In case the Actor is still draining its internal buffer (after having received aStatus.Success
) before signaling completion and it receives aStatus.Failure
, the failure will be signaled downstream immediately (instead of the completion signal).The actor will be stopped when the stream is completed, failed or canceled from downstream, i.e. you can watch it to get notified when that happens.
- Parameters:
ackMessage
- (undocumented)- Returns:
- (undocumented)
-
combine
public <T,U> Source<U,NotUsed> combine(Source<T,?> first, Source<T,?> second, scala.collection.Seq<Source<T,?>> rest, scala.Function1<java.lang.Object,Graph<UniformFanInShape<T,U>,NotUsed>> strategy)
Combines several sources with fan-in strategy likeMerge
orConcat
and returnsSource
.- Parameters:
first
- (undocumented)second
- (undocumented)rest
- (undocumented)strategy
- (undocumented)- Returns:
- (undocumented)
-
combineMat
public <T,U,M1,M2,M> Source<U,M> combineMat(Source<T,M1> first, Source<T,M2> second, scala.Function1<java.lang.Object,Graph<UniformFanInShape<T,U>,NotUsed>> strategy, scala.Function2<M1,M2,M> matF)
Combines two sources with fan-in strategy likeMerge
orConcat
and returnsSource
with a materialized value.- Parameters:
first
- (undocumented)second
- (undocumented)strategy
- (undocumented)matF
- (undocumented)- Returns:
- (undocumented)
-
zipN
public <T> Source<scala.collection.immutable.Seq<T>,NotUsed> zipN(scala.collection.immutable.Seq<Source<T,?>> sources)
Combine the elements of multiple streams into a stream of sequences.- Parameters:
sources
- (undocumented)- Returns:
- (undocumented)
-
zipWithN
public <T,O> Source<O,NotUsed> zipWithN(scala.Function1<scala.collection.immutable.Seq<T>,O> zipper, scala.collection.immutable.Seq<Source<T,?>> sources)
-
queue
public <T> Source<T,SourceQueueWithComplete<T>> queue(int bufferSize, OverflowStrategy overflowStrategy)
Creates aSource
that is materialized as anSourceQueue
. You can push elements to the queue and they will be emitted to the stream if there is demand from downstream, otherwise they will be buffered until request for demand is received. Elements in the buffer will be discarded if downstream is terminated.Depending on the defined
OverflowStrategy
it might drop elements if there is no space available in the buffer.Acknowledgement mechanism is available.
akka.stream.scaladsl.SourceQueue.offer
returnsFuture[QueueOfferResult]
which completes withQueueOfferResult.Enqueued
if element was added to buffer or sent downstream. It completes withQueueOfferResult.Dropped
if element was dropped. Can also complete withQueueOfferResult.Failure
- when stream failed orQueueOfferResult.QueueClosed
when downstream is completed.The strategy
akka.stream.OverflowStrategy.backpressure
will not complete lastoffer():Future
call when buffer is full.You can watch accessibility of stream with
akka.stream.scaladsl.SourceQueue.watchCompletion
. It returns future that completes with success when the operator is completed or fails when the stream is failed.The buffer can be disabled by using
bufferSize
of 0 and then received message will wait for downstream demand unless there is another message waiting for downstream demand, in that case offer result will be completed according to the overflow strategy.- Parameters:
bufferSize
- size of buffer in element countoverflowStrategy
- Strategy that is used when incoming elements cannot fit inside the buffer- Returns:
- (undocumented)
-
unfoldResource
public <T,S> Source<T,NotUsed> unfoldResource(scala.Function0<S> create, scala.Function1<S,scala.Option<T>> read, scala.Function1<S,scala.runtime.BoxedUnit> close)
Start a newSource
from some resource which can be opened, read and closed. Interaction with resource happens in a blocking way.Example:
Source.unfoldResource( () => new BufferedReader(new FileReader("...")), reader => Option(reader.readLine()), reader => reader.close())
You can use the supervision strategy to handle exceptions for
read
function. All exceptions thrown bycreate
orclose
will fail the stream.Restart
supervision strategy will close and create blocking IO again. Default strategy isStop
which means that stream will be terminated on error inread
function by default.You can configure the default dispatcher for this Source by changing the
akka.stream.materializer.blocking-io-dispatcher
or set it for a given Source by usingActorAttributes
.Adheres to the
ActorAttributes.SupervisionStrategy
attribute.- Parameters:
create
- - function that is called on stream start and creates/opens resource.read
- - function that reads data from opened resource. It is called each time backpressure signal is received. Stream calls close and completes whenread
returns None.close
- - function that closes resource- Returns:
- (undocumented)
-
unfoldResourceAsync
public <T,S> Source<T,NotUsed> unfoldResourceAsync(scala.Function0<scala.concurrent.Future<S>> create, scala.Function1<S,scala.concurrent.Future<scala.Option<T>>> read, scala.Function1<S,scala.concurrent.Future<Done>> close)
Start a newSource
from some resource which can be opened, read and closed. It's similar tounfoldResource
but takes functions that returnFutures
instead of plain values.You can use the supervision strategy to handle exceptions for
read
function or failures of producedFutures
. All exceptions thrown bycreate
orclose
as well as fails of returned futures will fail the stream.Restart
supervision strategy will close and create resource. Default strategy isStop
which means that stream will be terminated on error inread
function (or future) by default.You can configure the default dispatcher for this Source by changing the
akka.stream.materializer.blocking-io-dispatcher
or set it for a given Source by usingActorAttributes
.Adheres to the
ActorAttributes.SupervisionStrategy
attribute.- Parameters:
create
- - function that is called on stream start and creates/opens resource.read
- - function that reads data from opened resource. It is called each time backpressure signal is received. Stream calls close and completes whenFuture
from read function returns None.close
- - function that closes resource- Returns:
- (undocumented)
-
-