RetryFlow

org.apache.pekko.stream.javadsl.RetryFlow
object RetryFlow

Attributes

Source
RetryFlow.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
RetryFlow.type

Members list

Value members

Concrete methods

@ApiMayChange(issue = "https://github.com/akka/akka/issues/27960")
def withBackoff[In, Out, Mat](minBackoff: Duration, maxBackoff: Duration, randomFactor: Double, maxRetries: Int, flow: Flow[In, Out, Mat], decideRetry: Function2[In, Out, Optional[In]]): Flow[In, Out, Mat]

API may change!

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.

Value parameters

decideRetry

retry condition decision function

flow

a flow to retry elements from

maxBackoff

maximum duration to backoff between issuing retries

minBackoff

minimum duration to backoff between issuing retries

randomFactor

adds jitter to the retry delay. Use 0 for no jitter

Attributes

Source
RetryFlow.scala
@ApiMayChange(issue = "https://github.com/akka/akka/issues/27960")
def withBackoffAndContext[In, InCtx, Out, OutCtx, Mat](minBackoff: Duration, maxBackoff: Duration, randomFactor: Double, maxRetries: Int, flow: FlowWithContext[In, InCtx, Out, OutCtx, Mat], decideRetry: Function2[Pair[In, InCtx], Pair[Out, OutCtx], Optional[Pair[In, InCtx]]]): FlowWithContext[In, InCtx, Out, OutCtx, Mat]

API may change!

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.

Value parameters

decideRetry

retry condition decision function

flow

a flow to retry elements from

maxBackoff

maximum duration to backoff between issuing retries

minBackoff

minimum duration to backoff between issuing retries

randomFactor

adds jitter to the retry delay. Use 0 for no jitter

Attributes

Source
RetryFlow.scala