我们是否需要在CQRS中混合使用同步和异步命令处理程序?

Jun*_*per 6 cqrs

  1. 用户在我们的站点上注册并登录.将RegsiterUserCommand发送到异步命令处理程序.
  2. 用户想要更改其地址,但尚未处理RegisterUserCommand.系统中没有用户记录.

这是同步命令处理程序的情况吗?将在验证用户之前创建用户记录.或者我应该在注册后重新考虑对真实用户的要求吗?在创建帐户之前,用户将无法访问该网站.如果用户无法直接访问系统,则可能会降低使用率.

在CQRS系统中看到混合使用同步和异步命令处理程序是否常见?

Rin*_*lin 9

我把所有东西都运行在异步中.为了保持一切简单,队列是FIFO; 另外每个分区有一个处理线程.这样,命令总是按发送顺序处理.此外,我们仍然具有可扩展性,因为每个分区的线程可以简单地转换为每个分区的机器,而无需重新分区整个解决方案.

在一些情况下,我们可能需要同步处理(在我的例子中,例子是初始用户注册,因为我们需要在让他继续之前验证服务器上的一些东西).在这种情况下,发送命令后,用户将显示"请等待几秒钟,同时处理您的注册".一旦确认(或失败)注册,用户就会自动进入下一个屏幕.这与Web UI中的AJAX无关.桌面UI甚至更简单.

  • 在同步处理的实例中,我假设您正在轮询读取存储以了解何时处理注册或者是否发生了错误. (2认同)