【发布时间】:2023-10-22 14:41:02
【问题描述】:
我目前正在编写我的第一个 saga,我对读取模型有点困惑。让我们用一个例子来解释它:
我有三个有界上下文:programming、contractor和control。它们中的每一个都有其特定的读取模型。
工作流程:
- 编程发送一个事件“JobScheduled”
- Saga 收到此事件并告诉承包商“安排工作”。
- 完成后,承包商发送一个事件“JobDone”。
- Saga 收到此事件并告诉 Control“开始控制期”。
这里一切都很好。我们处于写入端,因此我们正在传递重要信息以使流程继续进行。
我的问题带有不必要的信息。假设事件“JobScheduled” 有一个注释字段:“测试注释”,在此工作完成之前,该字段更改为“测试注释重要”。此更改对所描述的工作流并不重要,但重要的是 contractor 在查看 contractor 有界的读取模型时可能会看到字段中的更改上下文。
我是要将事件 NoteChanged 提供给 saga 并对其进行处理,还是应该在我的 contractor 有界上下文中创建一个直接监听此事件的投影?
将它提供给 saga 在我看来是不必要的工作,因为我只是在此处更新 readmodel,没有涉及更改的域。
另一方面,在两个限界上下文之间进行直接耦合会删除 sagas 的一项资产,即修改限界上下文在工作流中彼此之间的交互的可能性。
感谢您的阅读,
【问题讨论】:
标签: cqrs event-sourcing saga