Class RetryFlow
- java.lang.Object
-
- org.apache.pekko.stream.javadsl.RetryFlow
-
public class RetryFlow extends java.lang.Object
-
-
Constructor Summary
Constructors Constructor Description RetryFlow()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <In,Out,Mat>
Flow<In,Out,Mat>withBackoff(java.time.Duration minBackoff, java.time.Duration maxBackoff, double randomFactor, int maxRetries, Flow<In,Out,Mat> flow, Function2<In,Out,java.util.Optional<In>> decideRetry)API may change!static <In,InCtx,Out,OutCtx,Mat>
FlowWithContext<In,InCtx,Out,OutCtx,Mat>withBackoffAndContext(java.time.Duration minBackoff, java.time.Duration maxBackoff, double randomFactor, int maxRetries, FlowWithContext<In,InCtx,Out,OutCtx,Mat> flow, Function2<Pair<In,InCtx>,Pair<Out,OutCtx>,java.util.Optional<Pair<In,InCtx>>> decideRetry)API may change!
-
-
-
Method Detail
-
withBackoff
public static <In,Out,Mat> Flow<In,Out,Mat> withBackoff(java.time.Duration minBackoff, java.time.Duration maxBackoff, double randomFactor, int maxRetries, Flow<In,Out,Mat> flow, Function2<In,Out,java.util.Optional<In>> decideRetry)
API may change!Allows retrying individual elements in the stream with an exponential backoff.
The retry condition is controlled by the
decideRetryfunction. It takes the originally emitted element and the response emitted byflow, and may return a request to be retried.The implementation of the
RetryFlowrequires thatflowfollows one-in-one-out semantics, theFlowmay not filter elements, nor emit more than one element per incoming element. TheRetryFlowwill fail if two elements are emitted from theflow, it will be stuck "forever" if nothing is emitted. Just one element will be emitted into theflowat any time. Theflowneeds to emit an element before the next will be emitted to it.- Parameters:
minBackoff- minimum duration to backoff between issuing retriesmaxBackoff- maximum duration to backoff between issuing retriesrandomFactor- adds jitter to the retry delay. Use 0 for no jitterflow- a flow to retry elements fromdecideRetry- retry condition decision function
-
withBackoffAndContext
public static <In,InCtx,Out,OutCtx,Mat> FlowWithContext<In,InCtx,Out,OutCtx,Mat> withBackoffAndContext(java.time.Duration minBackoff, java.time.Duration maxBackoff, double randomFactor, int maxRetries, FlowWithContext<In,InCtx,Out,OutCtx,Mat> flow, Function2<Pair<In,InCtx>,Pair<Out,OutCtx>,java.util.Optional<Pair<In,InCtx>>> decideRetry)
API may change!Allows retrying individual elements in the stream with an exponential backoff.
The retry condition is controlled by the
decideRetryfunction. It takes the originally emitted element with its context, and the response emitted byflow, and may return a request to be retried.The implementation of the
RetryFlowrequires thatflowfollows one-in-one-out semantics, theFlowWithContextmay not filter elements, nor emit more than one element per incoming element. TheRetryFlowwill fail if two elements are emitted from theflow, it will be stuck "forever" if nothing is emitted. Just one element will be emitted into theflowat any time. Theflowneeds to emit an element before the next will be emitted to it.The wrapped
flowanddecideRetrytake the additional context parameters which can be a context, or used to control retrying with other information.- Parameters:
minBackoff- minimum duration to backoff between issuing retriesmaxBackoff- maximum duration to backoff between issuing retriesrandomFactor- adds jitter to the retry delay. Use 0 for no jitterflow- a flow to retry elements fromdecideRetry- retry condition decision function
-
-