【发布时间】:2023-04-06 07:10:01
【问题描述】:
我目前正在开发一个 DDD 地理定位应用程序,该应用程序在一个有界上下文中具有两个单独的聚合根。由于频繁的坐标更新,我使用 redis 来保存不允许回滚的数据。
- 我的第一个聚合根是包含司机(用户)、乘客(用户列表)等的行程对象。
- 我的第二个聚合根是用户位置更新
发送坐标更新后,我将生成并触发“UpdateUserPostionEvent”。作为副作用,我还将在某个点生成并触发“UpdateTripEvent”,这将更新司机/乘客的坐标。
我的问题是,如果我异步触发“UpdateLiveTripEvent”,我该如何处理最终的一致性。我的 UpdateLiveTripEventHandler 有几个故障点,除了记录错误之外,我该如何处理这种不一致?
我正在使用一个名为 MediatR 的库,而据我所知的 INotificationHandler 是“一劳永逸”
编辑: 最终找到了这个 SO post,它准确地描述了我所需要的(传奇/流程管理器),但不幸的是,我无法找到任何类型的 Saga 实现来处理同一事件中的事件公元前。我看到的所有示例都涉及服务总线。
【问题讨论】:
标签: events redis event-handling domain-driven-design mediator