В настоящее время я создаю приложение, основанное на событиях, с Akka Persistence и плагином Cassandra Journal. У меня есть несколько представлений, которым необходимо фиксировать события нескольких идентификаторов сохраняемости, поэтому я использую запросы eventsByTag для обновления (например) моих представлений mongodb.
Если я перезапускаю свое приложение, запрос повторяется, поэтому мне нужно как-то сохранить состояние представлений, чтобы оно не воспроизводило события, которые уже были обработаны.
Сначала я планировал использовать смещение последнего обработанного события, поскольку плагин Cassandra использует TimeUUID внутри, и оно должно быть уникальным. Проблема здесь в том, что Akka Journal поддерживает только длинные значения в качестве смещения, поэтому TimeUUID преобразуется обратно в обычную метку времени.
So e.g.:
2d2504b1-31f8-11e6-af83-9f34c8060f40 и 2d2504b2-31f8-11e6-af83-9f34c8060f40
оба приводят к одному и тому же смещению, что делает его бесполезным для меня с точки зрения определения последнего обработанного события, если у меня есть несколько событий в одной и той же мс.
Есть ли у кого-нибудь идеи о том, как лучше подойти к этому?
РЕДАКТИРОВАТЬ
CassandraReadJournal
предоставляет перегруженную версию потока getEventsByTag, который возвращает UUIDEventEnvelopes. Он содержит смещение как UUID, а не как Long.