Пока не реализовал, ибо вероятность такого сценария для меня приемлема.
Можно приблизительно прикинуть. В слое presentation идет валидация прилетевшей от юзера DTO-шки по read-части. Предположим, что DTO успешно прошла проверку, затем идёт какая-то манипуляция длительностью порядка сотни мс и в конце сохранение стрима. Какая вероятность, что в течение этих 100 мс вклинится другой клиент с дублирующей DTO и успеет сохранить стрим? В принципе, довольно таки низкая, если не сказать, что практически нулевая. Но предположим, что это произошло. При синхронизации read части обнаруживается дубликат и посылается команда. И тут наше приложение падает. Вроде как вероятность внезапного падения по какой-либо причине не такая уж и низкая. Но в нашем случае надо перемножить две вероятности согласно теорверу, насколько я помню. Поэтому получаем, что сценарий довольно таки нереалистичный.
В любом случае, можно и руками потом восстановить, ориентируясь на время регистрации событий.
С теоретической точки зрения решать наверное надо с помощью ProcessManager'а
https://medium.com/@drozzy/long-running-pro...rs-c87fbb2ca644Разница с текущим моим решением по большому счёту только в том, что при синхронизации я буду не команду посылать, а событие.
А ты как думаешь?
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль