在CQRS的写端为Saga/Process manager处理事件



我理解流程管理器(aska as sagas)使用事件(和命令)并在CQRS的读取端生成/发送命令。

我有三个问题:

  1. 流程管理人员通常如何获得CQRS实现中的事件?他们通常是订阅事件总线之类的东西还是直接发送事件?

  2. 这个传递机制(不管是什么)需要可靠的(至少一次)传递吗?如果错过事件(例如由于崩溃),这似乎是一个问题。

  3. 是否有进程管理器侦听它没有直接或间接向其发送命令的ar事件的示例?例如,只监听特定事件

我问这些关于CQRS中写端/域模型的事件分布的问题,而不是读/查询端。

谢谢,阿什利。

  1. 是的,它们注册它们想在事件总线上接收的事件。
  2. 是的,它需要可靠。因为,事件总线通常具有"至少一次"交付保证,即,它保证每个事件至少向每个注册端点交付一次。流程管理器还需要确保在确认收到事件时,它们的状态发生了变化,并且它们发送到命令总线的命令也得到了可靠的存储。在我们自己的CQRS实现中,我们对这部分使用JEE事务。当然,我甚至会说这是标准。一个非常简单的例子是一些通知系统(例如,通知邮件),当域中发生某事时。

最新更新