Контекст:
В системе, над которой я работаю, есть модуль.Модуль имеет постоянное хранилище для своих агрегатных состояний.
Я хотел бы реализовать стратегию восстановления всех агрегатных состояний с нуля.
Event Store - это самодельная реализация, использующая реляционныебаза данных.Он хранит все события с начала истории системы.Пока у меня нет снимков.На данный момент система довольно мала.Однако я хотел бы принять во внимание наличие снимков в моем вопросе.
Поэтому я ищу стратегию восстановления агрегатов после сбоя системы в худшем случае, когда база данных модуля потеряна (восстановление не требуется)доступны).
Вопрос:
Какие шаги и какую информацию модуль должен запрашивать из хранилища событий, чтобы иметь возможность восстановить его состояние?
У меня есть одно решение, и я хотел бы знать, нахожусь ли я на правильном пути.Пожалуйста, проверьте решение, написанное ниже.
Решение, к которому я пришел до сих пор:
Шаги:
- Запрос потока событий (списокупорядоченных событий) с определенными типами (агрегат создан / удален), который поможет определить список агрегированных идентификаторов.
- Использовать список агрегированных идентификаторов, полученный на шаге 1, для запроса потоков агрегированных событий - один поток на агрегат.Если моментальный снимок доступен, он будет первым элементом совокупного потока.
Если у вас есть альтернативное решение, я буду рад узнать.