我目前正在使用Akka Persistence和Cassandra Journal插件构建一个事件源应用程序。 我有一些视图,需要捕获多个持久性id的事件,因此我使用eventsByTag查询来更新(例如)我的mongodb视图。
如果我重新启动我的应用程序,则会重播查询,因此我需要以某种方式存储视图的状态,因此它不会重放已经处理过的事件。
起初我计划使用上次处理事件的偏移量,因为Cassandra插件在内部使用TimeUUID,它应该是唯一的。这里的问题是,Akka Journal仅支持Long值作为偏移量,因此TimeUUID被转换回正常时间戳。
所以例如:
2d2504b1-31f8-11e6-af83-9f34c8060f40 和 2d2504b2-31f8-11e6-af83-9f34c8060f40
两者都会产生相同的偏移量,如果我在同一个ms中有多个事件,那么就确定最后一个处理过的事件而言,这对我来说是没用的。
有没有人知道如何以更好的方式解决这个问题?
修改
CassandraReadJournal
提供了getEventsByTag流的重载版本,它返回UUIDEventEnvelopes。它包含UUID而不是Long的偏移量。
答案 0 :(得分:0)
CassandraReadJournal
提供getEventsByTag
流的重载版本,返回UUIDEventEnvelopes
。其中包含UUID
而非Long
的偏移量,因此是唯一的。