我从事件存储中删除了一些事件,但现在我得到了这样的异常:
System.ApplicationException: Tried to apply event with sequence number 180 to aggregate root with ID 55b43b9e-cd9a-4db9-9b86-78feb7043051 with current sequence number 15. Expected an event with sequence number 16.
我怎么能忽略这样的异常?
你不能。。。。。Circus对其序列号非常严格,这是为了确保聚合根水合到正确的状态,并且不可能水合到它们从未真正处于的状态。
这意味着,如果需要"删除"事件,则不能仅从事件存储中删除这些事件。
我曾经尝试过一些逻辑出错,在系统运行和用户继续工作时意外生成50000个事件,然后我们通过将事件(使用EventReplicator
)复制到新的事件存储中,用"重写器"装饰目标IEventStore
来删除这些事件,然后忽略某些事件,并根据需要重写所有序列号。
虽然很难做到正确。
你真的需要删除这些事件吗?你不能把一些纠正事件附加到有问题的聚合根的事件流中吗?