Class RetryFlow$


  • public class RetryFlow$
    extends java.lang.Object
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static RetryFlow$ MODULE$
      Static reference to the singleton instance of this Scala object.
    • Constructor Summary

      Constructors 
      Constructor Description
      RetryFlow$()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      <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!
      <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!
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • MODULE$

        public static final RetryFlow$ MODULE$
        Static reference to the singleton instance of this Scala object.
    • Constructor Detail

      • RetryFlow$

        public RetryFlow$()
    • Method Detail

      • withBackoff

        public <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 decideRetry function. It takes the originally emitted element and the response emitted by flow, and may return a request to be retried.

        The implementation of the RetryFlow requires that flow follows one-in-one-out semantics, the Flow may not filter elements, nor emit more than one element per incoming element. The RetryFlow will fail if two elements are emitted from the flow, it will be stuck "forever" if nothing is emitted. Just one element will be emitted into the flow at any time. The flow needs to emit an element before the next will be emitted to it.

        Parameters:
        minBackoff - minimum duration to backoff between issuing retries
        maxBackoff - maximum duration to backoff between issuing retries
        randomFactor - adds jitter to the retry delay. Use 0 for no jitter
        flow - a flow to retry elements from
        decideRetry - retry condition decision function
      • withBackoffAndContext

        public <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 decideRetry function. It takes the originally emitted element with its context, and the response emitted by flow, and may return a request to be retried.

        The implementation of the RetryFlow requires that flow follows one-in-one-out semantics, the FlowWithContext may not filter elements, nor emit more than one element per incoming element. The RetryFlow will fail if two elements are emitted from the flow, it will be stuck "forever" if nothing is emitted. Just one element will be emitted into the flow at any time. The flow needs to emit an element before the next will be emitted to it.

        The wrapped flow and decideRetry take 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 retries
        maxBackoff - maximum duration to backoff between issuing retries
        randomFactor - adds jitter to the retry delay. Use 0 for no jitter
        flow - a flow to retry elements from
        decideRetry - retry condition decision function