Очистить старые снимки в хранилище снимков очень просто: после каждого успешного снимка актор получает saveSnapshotSuccess
с метаданными, указывающими его порядковый номер, эту информацию можно использовать для создания снимка SnapshotSelectionCriteria
, а затем передать его deleteSnapshots
.
Однако нет эквивалента saveSnapshotSuccess
для сохраняемых сообщений. Таким образом, невозможно узнать порядковый номер «последнего» сообщения в журнале. Потенциально можно сохранить локальный кеш количества сохраненных сообщений и сделать снимок, чтобы использовать его для вызова deleteMessages
, но это слишком утомительно.
Есть ли способ использовать persistence-query
для получения последнего сохраненного сообщения для актера, чтобы получить указание на то, что такое порядковый номер, а затем, возможно, вызвать deleteMessages
, скажем, val seqNr = sequenceNumberObtainedFromReadJournal - 100
, (при условии, что мы сделали снимок состояния актера, скажем, после каждых 50 Сообщения)?
P.S. Выбор порядкового номера для перехода к deleteMessages
, конечно, немного сложнее, чем упомянуто выше: даже если есть способ получить порядковый номер последнего сообщения для актера из журнала, нужно побеспокоиться о вероятность того, что последние три моментальных снимка оказались неудачными, поэтому это не так просто, как просто использовать 100 и 50), поэтому реализация будет немного сложнее, но, по крайней мере, мы не загрязняем тип моментального снимка счетчиком последовательности сохраняемости.< /эм>