我有一个问题如何处理一个传奇,其中决策取决于在传奇创建之前发布的事件。
这是一个例子来说明我的问题:
想象一下,我有一个 CustomerAR 和一个 OrderAR。当创建 customerAR 时,验证过程开始,该过程的结果是客户无需特别授权即可自由消费的订单金额。我不会详细介绍这个过程,因为它脱离了上下文。计算金额时,将使用计算出的金额向 CustomerAR 发送命令,然后 CustomerAR 发布具有该值的事件 (CustomerMaxOrderAmountEvent)。到目前为止,一切都很好。
几周后,客户下了订单。OrderAR 已创建并启动我的 OrderSaga。saga 等待订单完全创建,然后必须做出决定是否需要为该订单发送 AutorizationCommand。要做出该决定,它必须知道 CustomerMaxOrderAmountEvent 是否已发布以及金额的值。通常 OrderSaga 也会订阅 CustomerMaxOrderAmountEvent,但问题是这个事件永远不会发生,因为它在过去已经发生过。
我该如何处理。我是否应该查询读取模型以了解该值,是否应该发送命令来获取该值,是否应该引用 CustomerAR,是否应该重播 saga 中的所有历史事件以便他已经知道历史。
更新
请注意,这是关于概念而不是关于这个具体示例。该示例纯粹是为了澄清问题:“2 个不相关的聚合根,它们不是同一有界上下文的一部分。”
感谢您的帮助。
梅尔文