我目前正在使用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的偏移量 .
1 回答
CassandraReadJournal
提供getEventsByTag
流的重载版本,返回UUIDEventEnvelopes
. 它包含的偏移量为UUID
而不是Long
,因此是唯一的 .