我一直在使用Paramore Brigther来实现CQRS及其命令存储。我的问题是:
最佳做法是什么,它是在完成处理方法之前还是之后存储命令?我读过here,建议您先这样做,但是如果处理程序失败,我们是否不希望不存储命令?
但是我想到了几种情况,您希望在执行hendler方法之前/之后存储命令:
情况A.如果存在IncreaseCreditLimitCommand,并且在检索客户期间未找到客户。 IMO,我们不想存储此命令,对吗?
情况B。如果存在IncreaseCreditLimitCommand,并且在业务验证期间拒绝客户增加限额。 IMO,我们仍然要存储此命令,不是吗?
答案 0 :(得分:1)
最佳做法是什么,它是在完成处理方法之前还是之后存储命令?我在这里阅读了它的建议,但如果处理程序失败,我们是否不希望不存储命令?
为什么不呢?如果我们希望能够重现以后发生的事情,那么我们还需要能够重现失败的命令。
如果您正在考虑以命令持久性为特征的设计,那么LMAX Disruptor的各种文章都是不错的阅读方法。
答案 1 :(得分:0)
我不知道“ Paramore Brigther”是什么,但是我可以告诉您有关DDD和CQRS的信息。这两种方法通常用于事件源,因为它们像拼图一样契合在一起。在事件源中,您保存事件而不是命令。由于DDD是事件驱动的,因此非常有意义。我不会更深入地解释它,因为这是一个很大的主题,但是我认为您应该考虑使用这种方法而不是存储命令。它将使您免于将来遇到许多设计问题。