Как обрабатывать ситуации, когда модель чтения стала вне синхронизации с журналами событий?
-
26-09-2019 - |
Вопрос
Когда снимки агрегатов стали вне синхронизации с журналом событий, я могу просто воспроизвести свои события из ранних снимков (которые должны быть в синхронизации). То же самое я могу сделать, когда добавляю / удалите новые поля или когда я изменяю логику существующих обработчиков.
В случае, если мне нужно добавить новую модель чтения (т.е. новый представление отчета), я могу сделать то же самое снова - я повторю свои события.
Но как я должен обрабатывать ситуацию, когда модель чтения стала без синхронизации с журналом событий? Хранение событий и публикаций в одной транзакции, но обновление модели чтения произошла в другой транзакции, которая может потерпеть неудачу. Повторяющиеся события с самого начала могут помочь, но это может принимать вечность. Мне нужна концепция снимков для всей читающей модели?
Как вы решаете эту проблему? Спасибо.
Решение
Что было бы причиной неудачи в обработчике событий? Как долго "вечность"?
Обновления чтения модели редко проваливаются (в отличие от командных обработчиков), поскольку логика внутри чрезвычайно проста. Сбои могут быть вызваны переходными проблемами (отключение IO / Network) и автоматически обрабатываются автоматически на шине сообщений.
Тем не менее, если модель чтения по какой-то причине не повреждена, то самый простой способ сбросить его и трансляция событий. Даже миллионы событий будут понадобиться достаточно небольшое количество времени. Кроме того, вы всегда можете использовать подход для уменьшения карты.
Я бы порекомендовал проводить приведенные снимки для чтения моделей. Я думаю, что это просто усложняет архитектуру без каких-либо значительных успехов.