+ akka-persistence: add internal message protocol traits
* resolve #16612
This commit is contained in:
parent
c56d670c03
commit
4208aacd2c
3 changed files with 62 additions and 2 deletions
|
|
@ -14,10 +14,19 @@ import akka.actor._
|
|||
* Messages exchanged between persistent actors, views and a journal.
|
||||
*/
|
||||
private[persistence] object JournalProtocol {
|
||||
|
||||
/** Marker trait shared by internal journal messages. */
|
||||
sealed trait Message extends Protocol.Message
|
||||
/** Internal journal command. */
|
||||
sealed trait Request extends Message
|
||||
/** Internal journal acknowledgement. */
|
||||
sealed trait Response extends Message
|
||||
|
||||
/**
|
||||
* Reply message to a failed [[DeleteMessages]] request.
|
||||
*/
|
||||
final case class DeleteMessagesFailure(cause: Throwable)
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Request to delete all persistent messages with sequence numbers up to `toSequenceNr`
|
||||
|
|
@ -25,6 +34,7 @@ private[persistence] object JournalProtocol {
|
|||
* as deleted in the journal, otherwise they are permanently deleted from the journal.
|
||||
*/
|
||||
final case class DeleteMessagesTo(persistenceId: String, toSequenceNr: Long, permanent: Boolean)
|
||||
extends Request
|
||||
|
||||
/**
|
||||
* Request to write messages.
|
||||
|
|
@ -33,12 +43,14 @@ private[persistence] object JournalProtocol {
|
|||
* @param persistentActor write requestor.
|
||||
*/
|
||||
final case class WriteMessages(messages: immutable.Seq[PersistentEnvelope], persistentActor: ActorRef, actorInstanceId: Int)
|
||||
extends Request
|
||||
|
||||
/**
|
||||
* Reply message to a successful [[WriteMessages]] request. This reply is sent to the requestor
|
||||
* before all subsequent [[WriteMessageSuccess]] replies.
|
||||
*/
|
||||
case object WriteMessagesSuccessful
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Reply message to a failed [[WriteMessages]] request. This reply is sent to the requestor
|
||||
|
|
@ -47,6 +59,7 @@ private[persistence] object JournalProtocol {
|
|||
* @param cause failure cause.
|
||||
*/
|
||||
final case class WriteMessagesFailed(cause: Throwable)
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Reply message to a successful [[WriteMessages]] request. For each contained [[PersistentRepr]] message
|
||||
|
|
@ -55,6 +68,7 @@ private[persistence] object JournalProtocol {
|
|||
* @param persistent successfully written message.
|
||||
*/
|
||||
final case class WriteMessageSuccess(persistent: PersistentRepr, actorInstanceId: Int)
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Reply message to a failed [[WriteMessages]] request. For each contained [[PersistentRepr]] message
|
||||
|
|
@ -64,6 +78,7 @@ private[persistence] object JournalProtocol {
|
|||
* @param cause failure cause.
|
||||
*/
|
||||
final case class WriteMessageFailure(message: PersistentRepr, cause: Throwable, actorInstanceId: Int)
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Reply message to a [[WriteMessages]] with a non-persistent message.
|
||||
|
|
@ -71,6 +86,7 @@ private[persistence] object JournalProtocol {
|
|||
* @param message looped message.
|
||||
*/
|
||||
final case class LoopMessageSuccess(message: Any, actorInstanceId: Int)
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Request to replay messages to `persistentActor`.
|
||||
|
|
@ -83,6 +99,7 @@ private[persistence] object JournalProtocol {
|
|||
* @param replayDeleted `true` if messages marked as deleted shall be replayed.
|
||||
*/
|
||||
final case class ReplayMessages(fromSequenceNr: Long, toSequenceNr: Long, max: Long, persistenceId: String, persistentActor: ActorRef, replayDeleted: Boolean = false)
|
||||
extends Request
|
||||
|
||||
/**
|
||||
* Reply message to a [[ReplayMessages]] request. A separate reply is sent to the requestor for each
|
||||
|
|
@ -91,18 +108,21 @@ private[persistence] object JournalProtocol {
|
|||
* @param persistent replayed message.
|
||||
*/
|
||||
final case class ReplayedMessage(persistent: PersistentRepr)
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Reply message to a successful [[ReplayMessages]] request. This reply is sent to the requestor
|
||||
* after all [[ReplayedMessage]] have been sent (if any).
|
||||
*/
|
||||
case object ReplayMessagesSuccess
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Reply message to a failed [[ReplayMessages]] request. This reply is sent to the requestor
|
||||
* if a replay could not be successfully completed.
|
||||
*/
|
||||
final case class ReplayMessagesFailure(cause: Throwable)
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Request to read the highest stored sequence number of a given persistent actor.
|
||||
|
|
@ -112,6 +132,7 @@ private[persistence] object JournalProtocol {
|
|||
* @param persistentActor requesting persistent actor.
|
||||
*/
|
||||
final case class ReadHighestSequenceNr(fromSequenceNr: Long = 1L, persistenceId: String, persistentActor: ActorRef)
|
||||
extends Request
|
||||
|
||||
/**
|
||||
* Reply message to a successful [[ReadHighestSequenceNr]] request.
|
||||
|
|
@ -119,6 +140,7 @@ private[persistence] object JournalProtocol {
|
|||
* @param highestSequenceNr read highest sequence number.
|
||||
*/
|
||||
final case class ReadHighestSequenceNrSuccess(highestSequenceNr: Long)
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Reply message to a failed [[ReadHighestSequenceNr]] request.
|
||||
|
|
@ -126,5 +148,5 @@ private[persistence] object JournalProtocol {
|
|||
* @param cause failure cause.
|
||||
*/
|
||||
final case class ReadHighestSequenceNrFailure(cause: Throwable)
|
||||
extends Response
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
/**
|
||||
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
|
||||
*/
|
||||
|
||||
package akka.persistence
|
||||
|
||||
/**
|
||||
* INTERNAL API.
|
||||
*
|
||||
* Messages exchanged between persistent actors, views and a journal/snapshot-store.
|
||||
*/
|
||||
private[persistence] object Protocol {
|
||||
|
||||
/**
|
||||
* INTERNAL API.
|
||||
*
|
||||
* Internal persistence extension messages extend this trait.
|
||||
*
|
||||
* Helps persistence plugin developers to differentiate
|
||||
* internal persistence extension messages from their custom plugin messages.
|
||||
*/
|
||||
trait Message
|
||||
|
||||
}
|
||||
|
|
@ -12,7 +12,8 @@ package akka.persistence
|
|||
* @param sequenceNr sequence number at which the snapshot was taken.
|
||||
* @param timestamp time at which the snapshot was saved.
|
||||
*/
|
||||
@SerialVersionUID(1L) //#snapshot-metadata
|
||||
@SerialVersionUID(1L) //
|
||||
//#snapshot-metadata
|
||||
final case class SnapshotMetadata(persistenceId: String, sequenceNr: Long, timestamp: Long = 0L)
|
||||
//#snapshot-metadata
|
||||
|
||||
|
|
@ -113,6 +114,14 @@ object SelectedSnapshot {
|
|||
* Defines messages exchanged between persistent actors and a snapshot store.
|
||||
*/
|
||||
private[persistence] object SnapshotProtocol {
|
||||
|
||||
/** Marker trait shared by internal snapshot messages. */
|
||||
sealed trait Message extends Protocol.Message
|
||||
/** Internal snapshot command. */
|
||||
sealed trait Request extends Message
|
||||
/** Internal snapshot acknowledgement. */
|
||||
sealed trait Response extends Message
|
||||
|
||||
/**
|
||||
* Instructs a snapshot store to load a snapshot.
|
||||
*
|
||||
|
|
@ -121,6 +130,7 @@ private[persistence] object SnapshotProtocol {
|
|||
* @param toSequenceNr upper sequence number bound (inclusive) for recovery.
|
||||
*/
|
||||
final case class LoadSnapshot(persistenceId: String, criteria: SnapshotSelectionCriteria, toSequenceNr: Long)
|
||||
extends Request
|
||||
|
||||
/**
|
||||
* Response message to a [[LoadSnapshot]] message.
|
||||
|
|
@ -128,6 +138,7 @@ private[persistence] object SnapshotProtocol {
|
|||
* @param snapshot loaded snapshot, if any.
|
||||
*/
|
||||
final case class LoadSnapshotResult(snapshot: Option[SelectedSnapshot], toSequenceNr: Long)
|
||||
extends Response
|
||||
|
||||
/**
|
||||
* Instructs snapshot store to save a snapshot.
|
||||
|
|
@ -136,6 +147,7 @@ private[persistence] object SnapshotProtocol {
|
|||
* @param snapshot snapshot.
|
||||
*/
|
||||
final case class SaveSnapshot(metadata: SnapshotMetadata, snapshot: Any)
|
||||
extends Request
|
||||
|
||||
/**
|
||||
* Instructs snapshot store to delete a snapshot.
|
||||
|
|
@ -143,6 +155,7 @@ private[persistence] object SnapshotProtocol {
|
|||
* @param metadata snapshot metadata.
|
||||
*/
|
||||
final case class DeleteSnapshot(metadata: SnapshotMetadata)
|
||||
extends Request
|
||||
|
||||
/**
|
||||
* Instructs snapshot store to delete all snapshots that match `criteria`.
|
||||
|
|
@ -151,4 +164,5 @@ private[persistence] object SnapshotProtocol {
|
|||
* @param criteria criteria for selecting snapshots to be deleted.
|
||||
*/
|
||||
final case class DeleteSnapshots(persistenceId: String, criteria: SnapshotSelectionCriteria)
|
||||
extends Request
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue