1

我目前正在使用 Akka Persistence 和 Cassandra Journal 插件构建一个事件源应用程序。我有一些视图需要捕获多个持久性 ID 的事件,因此我使用 eventsByTag 查询来更新(例如)我的 mongodb 视图。

如果我重新启动我的应用程序,查询会被重播,所以我需要以某种方式存储视图的状态,所以它不会重播已经处理过的事件。

起初我计划使用最后处理的事件的偏移量,因为 Cassandra 插件在内部使用 TimeUUID,它应该是唯一的。这里的问题是,Akka Journal 仅支持 Long 值作为偏移量,因此 TimeUUID 被转换回正常的时间戳。

所以例如:

2d2504b1-31f8-11e6-af83-9f34c8060f40 和 2d2504b2-31f8-11e6-af83-9f34c8060f40

两者都会导致相同的偏移量,如果我在同一毫秒内有多个事件,这对我来说在确定最后处理的事件方面毫无用处。

有没有人知道如何以更好的方式解决这个问题?

编辑


CassandraReadJournal提供了 getEventsByTag 流的重载版本,它返回 UUIDEventEnvelopes 。这包含作为 UUID 而不是 Long 的偏移量。

4

1 回答 1

1

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

于 2016-06-18T11:03:14.293 回答