как lagom определяет, какие события для какой сущности

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

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

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


person piyushGoyal    schedule 30.05.2018    source источник


Ответы (1)


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

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

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

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

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

person ignasi35    schedule 30.05.2018
comment
Спасибо . Это помогает понять вещь - person piyushGoyal; 31.05.2018