CQRS-命令存储持久性规则

时间:2019-03-04 22:10:07

标签: command cqrs brighter

我一直在使用Paramore Brigther来实现CQRS及其命令存储。我的问题是:

最佳做法是什么,它是在完成处理方法之前还是之后存储命令?我读过here,建议您先这样做,但是如果处理程序失败,我们是否不希望不存储命令?

但是我想到了几种情况,您希望在执行hendler方法之前/之后存储命令:

情况A.如果存在IncreaseCreditLimitCommand,并且在检索客户期间未找到客户。 IMO,我们不想存储此命令,对吗?

情况B。如果存在IncreaseCreditLimitCommand,并且在业务验证期间拒绝客户增加限额。 IMO,我们仍然要存储此命令,不是吗?

2 个答案:

答案 0 :(得分:1)

  

最佳做法是什么,它是在完成处理方法之前还是之后存储命令?我在这里阅读了它的建议,但如果处理程序失败,我们是否不希望不存储命令?

为什么不呢?如果我们希望能够重现以后发生的事情,那么我们还需要能够重现失败的命令。

如果您正在考虑以命令持久性为特征的设计,那么LMAX Disruptor的各种文章都是不错的阅读方法。

答案 1 :(得分:0)

我不知道“ Paramore Brigther”是什么,但是我可以告诉您有关DDD和CQRS的信息。这两种方法通常用于事件源,因为它们像拼图一样契合在一起。在事件源中,您保存事件而不是命令。由于DDD是事件驱动的,因此非常有意义。我不会更深入地解释它,因为这是一个很大的主题,但是我认为您应该考虑使用这种方法而不是存储命令。它将使您免于将来遇到许多设计问题。