Я хорошо знаком с работой PersistentActor и PersistentView при реализации Akka Persistence.
Рассмотрим следующий пример с идеей, насколько я понимаю.
Класс случая Scala Contact.
case class Contact(id: String, version: Int, fName: String, lName: String, age: Int)
Сохраняемые события PersistentActor в журнале:
ContactCreated("123af-232ff-232d", 1, "john", "doe", 25)
FirstNameChanged("123af-232ff-232d", 2, "jan")
AgeChanged("123af-232ff-232d", 3, 27)
FirstNameChanged("123af-232ff-232d", 4, "janet")
Каждый раз, когда команды отправляются из отзывчивого пользовательского интерфейса, такие новые события сохраняются, если проверка прошла успешно 202 CommandAccepted или любая ошибка CommandValidationError была запущена в ответ.
Но без существенной задержки в адаптивной среде пользовательский интерфейс должен иметь возможность запрашивать серверную часть REST API и отображать последний объект Contact после серверной отправки WebSocket. strong> сообщает пользовательскому интерфейсу, что UUID «123af-232ff-232d» доступен для чтения:
Contact("123af-232ff-232d", 4, "janet", "doe", 27)
Этот результат должен получиться после объединения всех событий с последними доступными данными, насколько я понимаю.
Итак, меня на самом деле беспокоит следующее: Как и где в этом серверном приложении я обрабатываю эти события, как только они генерируются, объединяю эти данные и сохраняю объединенные данные для чтения на стороне запроса.
Заранее большое спасибо, если кто-то может пролить свет на реализацию или исправление моей мысли.