Шаблон Akka для создания экземпляра актера, только если объект, который он представляет, был ранее создан? - PullRequest
0 голосов
/ 04 сентября 2018

Как я могу загрузить актера, только если он ранее был официально создан по правилам домена? Все, что я видел, используя actorOf и постоянство, всегда создает пустой экземпляр, а затем применяет [возможно пустой] набор событий, которые произошли, тогда как я бы предпочел сделать пустые экземпляры непредставимыми. Существует ли стандартный подход для требования «созданного» события и иного запуска сбоя через «not found»?

Я думаю, что для каждой сущности в системе должен быть один экземпляр субъекта, но я ожидаю, что в любой момент времени будет активно необходимо менее 10% сущностей, поэтому я стараюсь не загружать весь набор просто проверить правильность при обработке запроса.

Я новичок в Akka и в организации мероприятий в целом, поэтому, если я думаю о вещах с бесполезной точки зрения, я также открыт для любых альтернатив.

1 Ответ

0 голосов
/ 04 сентября 2018

Полагаю, вы говорите о персистентных актерах. Существует нет API для сохранения состояния за пределами PersistentActor. Идея состоит в том, что актер отслеживает свое состояние для себя. Пустые актеры не получают прибыли, актеры должны сохранять какое-то состояние, поэтому, когда вы инициализируете его через actorOf, оно должно иметь вид состояния Created. С другой стороны, вы не должны думать, что оно сохранило свое состояние, пока не сообщит создателю, что оно сохранено.

Постоянные субъекты загружаются в память пассивно только тогда, когда вы явно их инициализируете, поэтому все объекты не будут загружены при запуске. Если вы хотите пассивировать их, вы можете остановить актеров или вызвать метод setReceiveTimeout в контексте актера.

...