現在、Akka Persistence と Cassandra Journal Plugin を使用してイベント ソース アプリケーションを構築しています。複数の永続性 ID のイベントをキャプチャする必要があるいくつかのビューがあるため、eventsByTag クエリを使用して mongodb ビューを更新しています (たとえば)。
アプリケーションを再起動すると、クエリが再生されるため、何らかの形でビューの状態を保存する必要があるため、既に処理されたイベントは再生されません。
最初は、Cassandra プラグインが TimeUUID を内部で使用し、一意である必要があるため、最後に処理されたイベントのオフセットを使用することを計画しました。ここでの問題は、Akka Journal がオフセットとして Long 値のみをサポートしているため、TimeUUID が通常のタイムスタンプに変換されることです。
例えば:
2d2504b1-31f8-11e6-af83-9f34c8060f40 および 2d2504b2-31f8-11e6-af83-9f34c8060f40
どちらも同じオフセットになるため、同じミリ秒内に複数のイベントがある場合、最後に処理されたイベントを決定するという点で役に立たなくなります。
これにもっと良い方法でアプローチする方法について誰か考えがありますか?
編集
はCassandraReadJournal
、UUIDEventEnvelopes を返す getEventsByTag ストリームのオーバーロードされたバージョンを提供します。これには、Long ではなく UUID としてのオフセットが含まれます。