首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只读一次日记

只读一次日记
EN

Stack Overflow用户
提问于 2016-07-18 12:18:42
回答 1查看 114关注 0票数 1

我正在使用akka-persistence的PersistenceQuery将初始状态加载到我的演员,负责管理内容。我希望它能够在启动时精确地重放一次,但它一直将这些发送到日志中。

代码语言:javascript
复制
14:11:28.405 [rooms-akka.actor.default-dispatcher-4] DEBUG a.p.q.j.l.LiveEventsByPersistenceIdPublisher - request replay for persistenceId [rooms] from [4] to [9223372036854775807] limit [100]
14:11:28.407 [rooms-akka.actor.default-dispatcher-17] DEBUG a.p.q.j.l.LiveEventsByPersistenceIdPublisher - replay completed for persistenceId [rooms], currSeqNo [4]
14:11:31.376 [rooms-akka.actor.default-dispatcher-17] DEBUG a.p.q.j.l.LiveEventsByPersistenceIdPublisher - request replay for persistenceId [rooms] from [4] to [9223372036854775807] limit [100]
14:11:31.377 [rooms-akka.actor.default-dispatcher-17] DEBUG a.p.q.j.l.LiveEventsByPersistenceIdPublisher - replay completed for persistenceId [rooms], currSeqNo [4]
14:11:34.376 [rooms-akka.actor.default-dispatcher-4] DEBUG a.p.q.j.l.LiveEventsByPersistenceIdPublisher - request replay for persistenceId [rooms] from [4] to [9223372036854775807] limit [100]
14:11:34.378 [rooms-akka.actor.default-dispatcher-4] DEBUG a.p.q.j.l.LiveEventsByPersistenceIdPublisher - replay completed for persistenceId [rooms], currSeqNo [4]

这是我写的试图实现它的程序。

代码语言:javascript
复制
implicit val mat = ActorMaterializer()(context)
val queries = PersistenceQuery(context.system).readJournalFor[LeveldbReadJournal](
      LeveldbReadJournal.Identifier)
val src: Source[EventEnvelope, NotUsed] = queries.eventsByPersistenceId("rooms", 0L, Long.MaxValue)
val events: Source[Any, NotUsed] = src.map(_.event)
val future = events.runWith(Sink.foreach{
  case x: RoomCreated => process(x)
  case x: RoomDeleted => process(x)
  case x => logger.error(s"Could not spawn $x")
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-25 16:26:36

我认为您期望的行为与实际所看到的不同之处在于,eventsByPersistenceId是一个“实时”流。这意味着它不仅会返回从您提供的偏移范围内开始的事件(您从0开始,然后转到Long.MaxValue,所以一切都是这样),而且如果它们进来时还会继续发送新的事件。如果您不想要一个活动流,那么将调用改为currentEventsByPersistenceId。这将只包括到那个时间点的事情(你提出请求的时间),而不是一个实时流。这应该是你要找的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38436558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档