首页 文章

Lagom或微服务中的异步流程设计

提问于
浏览
3

如何在Lagom设计asyn流量?

面临的问题:在我们的产品中,我们有一个Lead Aggregate,它有一个用户ID(代表潜在客户的所有者),现在用户有一个限制,即一个用户最多可以有10个与之相关的潜在客户 . 我们通过创建单独的Service ResourceManagement来设计它,当用户请求挑选潜在客户时,我们向LeadAggregate发送一个命令,生成事件LeadPickRequested . 在ProcessManager上听取事件并询问资源来自资源管理,在成功发送命令到LeadAggregate - MarkAsPicked并在此发送推送通知给用户领导被挑选但是从构建UI角度来看,它非常困难且同样不能做到将我们的API暴露给第三方 .

一个Sol . 我们已经完成的是在服务上收到请求时保存RequestID和请求期限 . 在命令中添加请求ID,当LeadAggregate最终更改为Picked State或Picked Failure时,PM听取事件,检查RequestFuture是否存在请求ID,然后用正确的响应完成将来 . 这样它就可以作为最终用户的Sync API .

任何更好的溶胶 . 为了这

1 回答

  • 0

    如果要提供同步API,我只看到两个选项:

    • 设计您的域模型,以便 Lead 创建逻辑,"10 leads max"规则和用户的潜在客户列表位于同一聚合根目录中(提示:AR can spawn another AR) .

    • 接受在同一事务中涉及多个非新聚合 .

    权衡取决于对相关聚合的交易分析 - 在同一交易中从他们那里读取会导致很多锁定和竞争条件吗?

相关问题