问题描述:在使用Akka的currentEventsByPersistenceId方法时,eventEnvelope.timestamp总是返回0。
解决方法:
case class Event(data: String, timestamp: Long = System.currentTimeMillis())
class MyPersistentActor extends PersistentActor {
def receiveCommand: Receive = {
case event: Event =>
val timestampedEvent = event.copy(timestamp = System.currentTimeMillis())
persist(timestampedEvent) { persistedEvent =>
// 处理事件
}
}
}
val persistenceId = "myPersistenceId"
val events = PersistenceQuery(system)
.readJournalFor[ReadJournal]
.currentEventsByPersistenceId(persistenceId, 0L, Long.MaxValue)
.filter(_.event.isInstanceOf[Event])
.map(_.event.asInstanceOf[Event])
.filter(_.timestamp > startTime)
请注意,startTime是一个表示时间戳的Long值。您可以根据需要设置该值。
如果您仍然遇到问题,请提供更多的代码和相关背景信息,以便我们更好地帮助您解决问题。