Class ActorFlow
- java.lang.Object
-
- akka.stream.typed.javadsl.ActorFlow
-
- Type Parameters:
I
- Incoming element type of the FlowQ
- Question message type that is spoken by the target actorA
- Answer type that the Actor is expected to reply with, it will become the Output type of this Flow
public class ActorFlow extends java.lang.Object
Use theask
pattern to send a request-reply message to the targetref
actor. If any of the asks times out it will fail the stream with aTimeoutException
.Do not forget to include the expected response type in the method call, like so:
flow.via(ActorFlow.<String, AskMe, String>ask(ref, timeout, (msg, replyTo) -> new AskMe(msg, replyTo))) // or simply flow.via(ActorFlow.ask(ref, timeout, AskMe::new))
otherwise
Nothing
will be assumed, which is most likely not what you want.Defaults to parallelism of 2 messages in flight, since while one ask message may be being worked on, the second one still be in the mailbox, so defaulting to sending the second one a bit earlier than when first ask has replied maintains a slightly healthier throughput.
The operator fails with an
WatchedActorTerminatedException
if the target actor is terminated, or with anTimeoutException
in case the ask exceeds the timeout passed in.Adheres to the
ActorAttributes.SupervisionStrategy
attribute.'''Emits when''' the futures (in submission order) created by the ask pattern internally are completed
'''Backpressures when''' the number of futures reaches the configured parallelism and the downstream backpressures
'''Completes when''' upstream completes and all futures have been completed and all elements have been emitted
'''Fails when''' the passed in actor terminates, or a timeout is exceeded in any of the asks performed
'''Cancels when''' downstream cancels
-
-
Constructor Summary
Constructors Constructor Description ActorFlow()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <I,Q,A>
Flow<I,A,NotUsed>ask(int parallelism, ActorRef<Q> ref, java.time.Duration timeout, scala.Function2<I,ActorRef<A>,Q> makeMessage)
Use theask
pattern to send a request-reply message to the targetref
actor.static <I,Q,A>
Flow<I,A,NotUsed>ask(ActorRef<Q> ref, java.time.Duration timeout, java.util.function.BiFunction<I,ActorRef<A>,Q> makeMessage)
-
-
-
Method Detail
-
ask
public static <I,Q,A> Flow<I,A,NotUsed> ask(ActorRef<Q> ref, java.time.Duration timeout, java.util.function.BiFunction<I,ActorRef<A>,Q> makeMessage)
-
ask
public static <I,Q,A> Flow<I,A,NotUsed> ask(int parallelism, ActorRef<Q> ref, java.time.Duration timeout, scala.Function2<I,ActorRef<A>,Q> makeMessage)
Use theask
pattern to send a request-reply message to the targetref
actor. If any of the asks times out it will fail the stream with aTimeoutException
.Do not forget to include the expected response type in the method call, like so:
flow.via(ActorFlow.<String, AskMe, String>ask(ref, timeout, (msg, replyTo) -> new AskMe(msg, replyTo))) // or simply flow.via(ActorFlow.ask(ref, timeout, AskMe::new))
otherwise
Nothing
will be assumed, which is most likely not what you want.The operator fails with an
WatchedActorTerminatedException
if the target actor is terminated, or with anTimeoutException
in case the ask exceeds the timeout passed in.Adheres to the
ActorAttributes.SupervisionStrategy
attribute.'''Emits when''' the futures (in submission order) created by the ask pattern internally are completed
'''Backpressures when''' the number of futures reaches the configured parallelism and the downstream backpressures
'''Completes when''' upstream completes and all futures have been completed and all elements have been emitted
'''Fails when''' the passed in actor terminates, or a timeout is exceeded in any of the asks performed
'''Cancels when''' downstream cancels
- Parameters:
parallelism
- (undocumented)ref
- (undocumented)timeout
- (undocumented)makeMessage
- (undocumented)- Returns:
- (undocumented)
-
-