我有两种类型的事件:
- 人已改变
- 人员地址已更改。
当一个新的人(和一个新地址)被创建(创建或更新的种类)时,它们也会被发布。
创建新人员时,会发布两个事件:PersonChanged 和 PersonAddressChanged(按此顺序)。但是,由于NServiceBus
是异步的,它们可以按任何顺序处理。并且当地址更改(对于现有人员)时,没有 PersonChanged 事件,只有 PersonAddressChanged 事件。
我想为 PersonAddressChanged 事件编写一个处理程序,它将:
- 检查此人是否在数据库中
- 如果是,那么只需进行更新
- 如果不是,则开始 saga 并等待 PersonChanged 事件(假设它是一个新人)
在 PersonChanged 事件中,我需要将人员插入数据库,找到 saga 并再次运行 PersonAddressChanged 的处理程序。
我可以通过 NServiceBus Sagas 实现这一目标吗?我不能假设消息处理应该是有序的,PersonChanged → PersonAddressChanged
因为有时任何特定地址更改都不会出现 PersonChanged 事件。