删除聚合后处理聚合异常的正确方法

Correct way of handling exceptions from aggregates after they have been deleted

使用 markDeleted() 方法删除聚合后,使用相同聚合标识符处理请求的正确方法是什么?

markDeleted() 方法将聚合标记为已删除,然后尝试使用相同的聚合标识符创建事件时,将抛出异常。

只是try/catch的一个例子吗?

如果我需要更清楚,请告诉我。

提前致谢,

P.S) 嗨阿拉德! :)

我建议不要重复使用已删除聚合实例的聚合标识符。

当你做这样的事情时,Axon 可以采用两种方式: 1. 旧的聚合标识符在将实例化聚合的命令中重用(我喜欢称它们为 'Constructor Command Handlers')。在这种情况下,事件存储引擎中会抛出一个异常,说明给定的事件已经存在。 2. 旧的聚合标识符被重新用于执行某些决策制定的命令。换句话说,此命令会将 @TargetAggregateIdentifier 注释绑定到旧的聚合标识符。在这种情况下,聚合将是事件源(假设您正在执行事件源),直到将聚合标记为 'deleted' 的事件。然后你会在脸上看到另一个异常,说明这是不正确的行为。

如果您确实需要重用该聚合标识符,则必须删除已删除的旧聚合的事件;很可能不是你想做的事。

因此,最好使用 UUID,它(几乎)保证您拥有唯一的聚合标识符。 这样您就可以安全地将聚合标记为已删除,而不必为处理此 space.

中的异常而烦恼

P.S。我代你向阿拉德问好。