我目前正在构建一个事件源应用程序与Akka持久性和卡桑德拉杂志插件。我有一些视图,需要捕获多个持久性ids的事件,因此我使用eventsByTag查询来更新(例如)我的mongodb视图。
如果我重新启动我的应用程序,查询就会被重放,所以我需要以某种方式存储视图的状态,这样它就不会重播已经处理的事件。
起初,我计划使用上次处理的事件的偏移量,因为Cassandra插件在内部使用TimeUUID,它应该是唯一的。这里的问题是,Akka只支持长值作为偏移量,因此TimeUUID被转换回一个正常的时间戳。
因此,例如:
2d2504b1-31f8-11e6-af83-9f34c8060f40及2d2504b2-31f8-11e6-af83-9f34c8060f40
如果我在相同的ms内有多个事件,那么这两个结果都会导致相同的偏移量,这使我在确定最后处理的事件方面毫无用处。
有没有人知道如何以更好的方式来处理这个问题?
编辑
CassandraReadJournal提供了getEventsByTag流的重载版本,它返回UUIDEventEnvelopes。这包含偏移量为UUID且不长。
发布于 2016-06-18 11:03:14
CassandraReadJournal提供了getEventsByTag流的重载版本,它返回UUIDEventEnvelopes。这包含作为UUID而不是Long的偏移量,因此是唯一的。
https://stackoverflow.com/questions/37821746
复制相似问题