Каков типичный вариант использования PersistentView в Akka?

Здесь http://doc.akka.io/docs/akka/current/scala/persistence.html написано:

PersistentView: представление - это постоянный субъект с отслеживанием состояния, который получает журналируемые сообщения, написанные другим постоянным субъектом. Само представление не регистрирует новые сообщения, вместо этого оно обновляет внутреннее состояние только из потока реплицированных сообщений постоянного актора.

Каков типичный вариант использования PersistentView?

Чем он отличается от Akka Streams / RX?

Это очень похоже на меня.


person jhegedus    schedule 29.03.2017    source источник


Ответы (1)


Это может оказаться полезным, если вы разрабатываете свое приложение на основе CQRS. CQRS хорошо сочетается с системами, основанными на событиях, как можно увидеть в сообщении блога.

Хотя вы можете использовать PersistentActor акторов для обновления состояния вашего приложения - это сторона / модель команды, PersistentView акторы пригодятся, когда вы хотите отобразить данные, то есть на стороне запроса.

Примером может служить хранение данных о банковских счетах. В традиционной модели у вас, вероятно, будут все операции CRUD в каком-то репозитории. Действительно базовым преобразованием в этой модели было бы использование PersistentActor для бита CUD и PersistentView для бита R. Приятно то, что вы отделяете командную часть, которая обновляет состояние со стороны запроса.

Что касается последнего вопроса, akka-persistence и akka-streams предназначены для разных целей. Фактически akka-persistence-query-experimental фактически построен с использованием akka-streams для предоставления различных источников. Пример можно найти здесь. Обратите внимание, что PersistentView устарел в последней версии и рекомендуется использовать PersistenceQuery.

person Andrei T.    schedule 29.03.2017
comment
Я рад, что смог вам помочь :) - person Andrei T.; 29.03.2017