New EventEnvelope including Offset rather than Long #21722
This commit is contained in:
parent
3951cf4e68
commit
33ece118a8
13 changed files with 75 additions and 58 deletions
|
|
@ -6,7 +6,7 @@ package docs.persistence.query
|
|||
import akka.NotUsed
|
||||
import akka.persistence.journal.{ EventAdapter, EventSeq }
|
||||
import akka.testkit.AkkaSpec
|
||||
import akka.persistence.query.{ EventEnvelope, PersistenceQuery, Sequence }
|
||||
import akka.persistence.query.{ EventEnvelope, EventEnvelope2, PersistenceQuery, Sequence }
|
||||
import akka.persistence.query.scaladsl._
|
||||
import akka.persistence.query.journal.leveldb.scaladsl.LeveldbReadJournal
|
||||
import akka.persistence.journal.Tagged
|
||||
|
|
@ -81,7 +81,7 @@ class LeveldbPersistenceQueryDocSpec(config: String) extends AkkaSpec(config) {
|
|||
val queries = PersistenceQuery(system).readJournalFor[LeveldbReadJournal](
|
||||
LeveldbReadJournal.Identifier)
|
||||
|
||||
val src: Source[EventEnvelope, NotUsed] =
|
||||
val src: Source[EventEnvelope2, NotUsed] =
|
||||
queries.eventsByTag(tag = "green", offset = Sequence(0L))
|
||||
//#EventsByTag
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ package docs.persistence.query
|
|||
|
||||
import akka.actor.Props
|
||||
import akka.persistence.PersistentRepr
|
||||
import akka.persistence.query.EventEnvelope
|
||||
import akka.persistence.query.{ EventEnvelope, EventEnvelope2, Sequence }
|
||||
import akka.serialization.SerializationExtension
|
||||
import akka.stream.actor.ActorPublisher
|
||||
import akka.stream.actor.ActorPublisherMessage.{ Cancel, Request }
|
||||
|
|
@ -20,7 +20,7 @@ object MyEventsByTagPublisher {
|
|||
|
||||
//#events-by-tag-publisher
|
||||
class MyEventsByTagPublisher(tag: String, offset: Long, refreshInterval: FiniteDuration)
|
||||
extends ActorPublisher[EventEnvelope] {
|
||||
extends ActorPublisher[EventEnvelope2] {
|
||||
|
||||
private case object Continue
|
||||
|
||||
|
|
@ -28,7 +28,7 @@ class MyEventsByTagPublisher(tag: String, offset: Long, refreshInterval: FiniteD
|
|||
|
||||
private val Limit = 1000
|
||||
private var currentOffset = offset
|
||||
var buf = Vector.empty[EventEnvelope]
|
||||
var buf = Vector.empty[EventEnvelope2]
|
||||
|
||||
import context.dispatcher
|
||||
val continueTask = context.system.scheduler.schedule(
|
||||
|
|
@ -81,7 +81,7 @@ class MyEventsByTagPublisher(tag: String, offset: Long, refreshInterval: FiniteD
|
|||
buf = result.map {
|
||||
case (id, bytes) =>
|
||||
val p = serialization.deserialize(bytes, classOf[PersistentRepr]).get
|
||||
EventEnvelope(offset = id, p.persistenceId, p.sequenceNr, p.payload)
|
||||
EventEnvelope2(offset = Sequence(id), p.persistenceId, p.sequenceNr, p.payload)
|
||||
}
|
||||
} catch {
|
||||
case e: Exception =>
|
||||
|
|
|
|||
|
|
@ -55,11 +55,15 @@ object PersistenceQueryDocSpec {
|
|||
config.getDuration("refresh-interval", MILLISECONDS).millis
|
||||
|
||||
override def eventsByTag(
|
||||
tag: String, offset: Offset = Sequence(0L)): Source[EventEnvelope, NotUsed] = offset match {
|
||||
tag: String, offset: Offset = Sequence(0L)): Source[EventEnvelope2, NotUsed] = offset match {
|
||||
case Sequence(offsetValue) ⇒
|
||||
val props = MyEventsByTagPublisher.props(tag, offsetValue, refreshInterval)
|
||||
Source.actorPublisher[EventEnvelope](props)
|
||||
.mapMaterializedValue(_ => NotUsed)
|
||||
.map {
|
||||
case EventEnvelope(offset, id, seqNr, event) =>
|
||||
EventEnvelope2(Sequence(offset), id, seqNr, event)
|
||||
}
|
||||
case _ ⇒
|
||||
throw new IllegalArgumentException("LevelDB does not support " + offset.getClass.getName + " offsets")
|
||||
}
|
||||
|
|
@ -100,7 +104,7 @@ object PersistenceQueryDocSpec {
|
|||
with akka.persistence.query.javadsl.CurrentPersistenceIdsQuery {
|
||||
|
||||
override def eventsByTag(
|
||||
tag: String, offset: Offset = Sequence(0L)): javadsl.Source[EventEnvelope, NotUsed] =
|
||||
tag: String, offset: Offset = Sequence(0L)): javadsl.Source[EventEnvelope2, NotUsed] =
|
||||
scaladslReadJournal.eventsByTag(tag, offset).asJava
|
||||
|
||||
override def eventsByPersistenceId(
|
||||
|
|
@ -225,7 +229,7 @@ class PersistenceQueryDocSpec(s: String) extends AkkaSpec(s) {
|
|||
//#events-by-tag
|
||||
// assuming journal is able to work with numeric offsets we can:
|
||||
|
||||
val blueThings: Source[EventEnvelope, NotUsed] =
|
||||
val blueThings: Source[EventEnvelope2, NotUsed] =
|
||||
readJournal.eventsByTag("blue")
|
||||
|
||||
// find top 10 blue things:
|
||||
|
|
@ -262,7 +266,7 @@ class PersistenceQueryDocSpec(s: String) extends AkkaSpec(s) {
|
|||
|
||||
//#projection-into-different-store
|
||||
class MyResumableProjection(name: String) {
|
||||
def saveProgress(offset: Long): Future[Long] = ???
|
||||
def saveProgress(offset: Offset): Future[Long] = ???
|
||||
def latestOffset: Future[Long] = ???
|
||||
}
|
||||
//#projection-into-different-store
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue