首页 文章

Akka Persistence Cassandra:timestamp!= offset . 或者如何只处理一次事件?

提问于
浏览
1

我目前正在使用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 回答

  • 0

    CassandraReadJournal 提供 getEventsByTag 流的重载版本,返回 UUIDEventEnvelopes . 它包含的偏移量为 UUID 而不是 Long ,因此是唯一的 .

相关问题