RestartSource.withBackoff
Wrap the given SourceSource with a SourceSource that will restart it when it fails or complete using an exponential backoff.
Signature
def withBackoff[T](minBackoff: FiniteDuration, maxBackoff: FiniteDuration, randomFactor: Double)(sourceFactory: () => Source[T, _]): Source[T, NotUsed]
def withBackoff[T](minBackoff: FiniteDuration, maxBackoff: FiniteDuration, randomFactor: Double, maxRestarts: Int)(sourceFactory: () => Source[T, _]): Source[T, NotUsed]Description
This FlowFlow will never emit a complete or failure, since the completion or failure of the wrapped SourceSource is always handled by restarting it. The wrapped SourceSource can however be cancelled by cancelling this SourceSource. When that happens, the wrapped SourceSource, if currently running will be cancelled, and it will not be restarted. This can be triggered simply by the downstream cancelling, or externally by introducing a KillSwitchKillSwitch right after this SourceSource in the graph.
This uses the same exponential backoff algorithm as Backoff.
Reactive Streams semantics
emits when the wrapped source emits
completes when the wrapped source completes