订阅者数据在发布者上线后播种

Sim*_*mon 2 messaging nservicebus distributed-computing event-store

假设我们有两个业务组件

  1. 用户管理

这拥有用户.更改用户信息时,此组件将发布消息.所以例如"NewUserCreated"

  1. 出版物

处理与用户的通信.电子邮件,推文等.因此,该组件订阅用户消息将该信息的子集存储在其自己的商店中.

问题

如果用户管理组件在出版物组件之前联机,会发生什么?出版物如何获得现有用户列表?它不应该知道用户管理组件如何存储其数据.

mor*_*nlf 5

我不确定用户管理和出版物是否是BC,而是不同的服务或AC,因为它们提供不同的业务功能,而不是两个实体子集.

在Publications服务中存储User实体的子集可能是服务气味.除了相关id(userId)之外,两个服务之间不应存在任何数据重复.

发布服务不需要所有用户的列表:

如果您正在谈论维护或版本更新等短服务器停机时间,那么从UserManagement服务发送的消息将在传出队列(或配置的超时后的错误队列)中可用,并且可以重新发送到Publications服务.以前的数据应该在Publications数据存储中.

让我们考虑另一种情况 - 假设您的系统已经运行了一年,并且您一直在收集用户信息而没有发布服务中的功能.现在,在拥有数百万用户之后,您可以添加新的发布服务.

最初,那里没有数据.当系统的当前用户登录时 - 他可能会看到一个新页面,他应该填写他的出版物详细信息(电子邮件,推特,facebook帐户等),这将导致出版服务数据中的新条目(与相关用户身份).新用户将在登录时向发布服务数据存储添加数据(如果您需要这样做).

这有帮助吗?