了解CQRS实施(可选择具有AKKA视角)

时间:2015-10-25 01:13:32

标签: akka cqrs

我对CQRS很新。我通过AKKA学到了它。然而,AKKA提供了实施它的方法,它不是教你CQRS。因此,人们最终可能会做出愚蠢的事情。

我想澄清一些概念。

假设我是一个带购物篮和库存的网站(我们还可以添加信用卡处理器)。在akka术语中,我可能有一个代表购物篮的演员和库存的演员。在任何情况下我都在谈论演员与否并不是真正的关系。重要的是,我有独立的处理单元异步操作并通过消息进行通信。

如果使用CQRS,我想了解这里的正确处理是什么:

1 - 购物Bakset演员,收到处理订单的命令(即购物篮)。

2 - 接下来会做什么:

2.1 - 它是否只是简单地创建一个事件OrderProcessed(篮子的内容),然后我不知道如何,但无论是否通过事件来源阅读期刊,都将处理它并更新状态为查询视图。

2.2 - 篮子演员将首先通过与所需的任何服务(包括库存)交谈来验证命令,然后要求库存移除物品,信用卡处理器,为卡充电,然后在确认ID后,创建事件OrderProcessed(篮子的内容)。

===> 第二个选项(2.2。)对我来说听起来更正确。查询视图可以从3个actor的日志中更新:Shoping Basket,Inventory和CreditCardProcessor。

Inventory和CreditCardProcessor都会要求发出包含交易It(即对购物篮的引用)的命令。

一切都会在最后保持一致。

===> 另一个选项(2.1)听起来很复杂,很奇怪,最终会从购物篮的日志中更新查询视图。它不仅仅是触及交易表,还可以更新库存表和信用收费表。此外还不清楚何时应该对卡进行充电。我还是不知道。

  • 我认为最后,我无法理解,假设在命令处理程序中的内容与在事件处理程序中应该是什么相反。

  • 读取处理单元的日志以同步查询数据库,包括从交易到库存和信用卡收费等级联。或者这应该是来自系统其他部分的事件的一部分。

我希望我能在这里得到一些明确的解释。

非常感谢,

丹尼尔

0 个答案:

没有答案