【发布时间】:2018-05-21 08:23:58
【问题描述】:
我正在研究 Lagom,并试图了解持久实体的工作原理。
我已阅读以下说明:
每个 PersistentEntity 都有一个固定的标识符(主键),可以 用于获取当前状态,并且在任何时候只有一个实例 (作为“单例”)保存在内存中。
有道理。
那么有下面的例子来创建一个客户:
@Override
public ServiceCall<CreateCustomerMessage, Done> createCustomer() {
return request -> {
log.info("===> Create or update customer {}", request.toString());
PersistentEntityRef<CustomerCommand> ref = persistentEntityRegistry.refFor(CustomerEntity.class, request.userEmail);
return ref.ask(new CustomerCommand.AddCustomer(request.firstName, request.lastName, request.birthDate, request.comment));
};
}
这让我很困惑:
- 这是否意味着persistentEntityRegistry 包含多个单例persistentEntities? persistentEntityRegistry 究竟是如何被填充的,里面有什么?假设我们创建了 10k 个用户,注册表是否包含 10k 个持久实体,还是只有 1 个?
- 在这种情况下,我们要创建一个新客户。因此,当我们使用
persistentEntityRegistry.refFor(CustomerEntity.class, request.userEmail);请求持久实体时,这不应该从注册表返回任何内容,因为客户还不存在(?)。
你能解释一下它是如何工作的吗? 文档很好,但我的理解中有一些我无法填补的漏洞。
【问题讨论】:
标签: lagom