как Лагом определяет, какие события для какого объекта - PullRequest
0 голосов
/ 30 мая 2018

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

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

MyВопрос в том, как lagom определяет, какие события принадлежат какому-либо объекту.Давайте возьмем пример: у меня есть служба отдыха, которая выполняет операции CRUD для пользователей.Для получения событий я создаю класс UserEntity, в котором я определяю различные обработчики команд для операций CUD.Теперь для меня, когда приложение работает, lagom генерирует экземпляр класса UserEntity.Теперь, если я сгенерирую запрос на создание «Алисы» и запрос на «Боба» с последующим запросом на обновление для «Алисы», здесь есть две сущности: Алиса и Боб.Так как же lagom идентифицирует сущность "Алиса", существует два события, созданных и обновленных, тогда как для Боба создано только одно событие.И как это связывает события с сущностями?

1 Ответ

0 голосов
/ 30 мая 2018

недопонимание в вашем описании заключается в том, что lagom не создает UserEntity .Правильное предложение будет следующим: «Lagom создает один экземпляр UserEntity для каждого пользователя в моей системе».

Хитрость заключается в том, что в любое время, когда вы хотите отправить событие экземпляру постоянного объекта, вы должны запросить экземпляр с помощьютип и идентификатор:

PersistentEntityRegistry persistentEntities = ...;
PersistentEntityRef<UserCommand> refAlice = 
  persistentEntities.refFor(UserEntity.class, "Alice");

В приведенном выше фрагменте Lagom гарантирует, что все команды, отправленные вами на refAlice, будут обрабатываться только этим экземпляром.

Затем любое событие, генерируемое refAlice будет привязан к классу и идентификатору, чтобы их нельзя было перепутать с событиями, генерируемыми другими экземплярами.

...