Package akka.persistence.journal.japi
Class AsyncRecovery
- java.lang.Object
-
- akka.persistence.journal.japi.AsyncRecovery
-
- All Implemented Interfaces:
AsyncRecovery
- Direct Known Subclasses:
AsyncWriteJournal
public abstract class AsyncRecovery extends java.lang.Object implements AsyncRecovery
Java API: asynchronous message replay and sequence number recovery interface.
-
-
Constructor Summary
Constructors Constructor Description AsyncRecovery()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description scala.concurrent.Future<java.lang.Object>
asyncReadHighestSequenceNr(java.lang.String persistenceId, long fromSequenceNr)
Plugin API: asynchronously reads the highest stored sequence number for the givenpersistenceId
.scala.concurrent.Future<scala.runtime.BoxedUnit>
asyncReplayMessages(java.lang.String persistenceId, long fromSequenceNr, long toSequenceNr, long max, scala.Function1<PersistentRepr,scala.runtime.BoxedUnit> replayCallback)
scala.concurrent.Future<java.lang.Long>
doAsyncReadHighestSequenceNr(java.lang.String persistenceId, long fromSequenceNr)
Java API, Plugin API: asynchronously reads the highest stored sequence number for the given `persistenceId`.scala.concurrent.Future<java.lang.Void>
doAsyncReplayMessages(java.lang.String persistenceId, long fromSequenceNr, long toSequenceNr, long max, java.util.function.Consumer<PersistentRepr> replayCallback)
Java API, Plugin API: asynchronously replays persistent messages.
-
-
-
Method Detail
-
asyncReadHighestSequenceNr
public final scala.concurrent.Future<java.lang.Object> asyncReadHighestSequenceNr(java.lang.String persistenceId, long fromSequenceNr)
Description copied from interface:AsyncRecovery
Plugin API: asynchronously reads the highest stored sequence number for the givenpersistenceId
. The persistent actor will use the highest sequence number after recovery as the starting point when persisting new events. This sequence number is also used astoSequenceNr
in subsequent call toAsyncRecovery.asyncReplayMessages(java.lang.String, long, long, long, scala.Function1<akka.persistence.PersistentRepr, scala.runtime.BoxedUnit>)
unless the user has specified a lowertoSequenceNr
. Journal must maintain the highest sequence number and never decrease it.This call is protected with a circuit-breaker.
Please also note that requests for the highest sequence number may be made concurrently to writes executing for the same
persistenceId
, in particular it is possible that a restarting actor tries to recover before its outstanding writes have completed.- Specified by:
asyncReadHighestSequenceNr
in interfaceAsyncRecovery
- Parameters:
persistenceId
- persistent actor id.fromSequenceNr
- hint where to start searching for the highest sequence number. When a persistent actor is recovering thisfromSequenceNr
will be the sequence number of the used snapshot or0L
if no snapshot is used.- Returns:
- (undocumented)
-
asyncReplayMessages
public final scala.concurrent.Future<scala.runtime.BoxedUnit> asyncReplayMessages(java.lang.String persistenceId, long fromSequenceNr, long toSequenceNr, long max, scala.Function1<PersistentRepr,scala.runtime.BoxedUnit> replayCallback)
- Specified by:
asyncReplayMessages
in interfaceAsyncRecovery
-
doAsyncReplayMessages
public abstract scala.concurrent.Future<java.lang.Void> doAsyncReplayMessages(java.lang.String persistenceId, long fromSequenceNr, long toSequenceNr, long max, java.util.function.Consumer<PersistentRepr> replayCallback)
Java API, Plugin API: asynchronously replays persistent messages. Implementations replay a message by calling `replayCallback`. The returned future must be completed when all messages (matching the sequence number bounds) have been replayed. The future must be completed with a failure if any of the persistent messages could not be replayed.The `replayCallback` must also be called with messages that have been marked as deleted. In this case a replayed message's `deleted` method must return `true`.
The `toSequenceNr` is the lowest of what was returned by
doAsyncReadHighestSequenceNr(java.lang.String, long)
and what the user specified as recoveryRecovery
parameter.- Parameters:
persistenceId
- id of the persistent actor.fromSequenceNr
- sequence number where replay should start (inclusive).toSequenceNr
- sequence number where replay should end (inclusive).max
- maximum number of messages to be replayed.replayCallback
- called to replay a single message. Can be called from any thread.
-
doAsyncReadHighestSequenceNr
public abstract scala.concurrent.Future<java.lang.Long> doAsyncReadHighestSequenceNr(java.lang.String persistenceId, long fromSequenceNr)
Java API, Plugin API: asynchronously reads the highest stored sequence number for the given `persistenceId`. The persistent actor will use the highest sequence number after recovery as the starting point when persisting new events. This sequence number is also used as `toSequenceNr` in subsequent call to [[#asyncReplayMessages]] unless the user has specified a lower `toSequenceNr`.- Parameters:
persistenceId
- id of the persistent actor.fromSequenceNr
- hint where to start searching for the highest sequence number.
-
-