【问题标题】:Do we need a mix of synchronous and asynchronous command handlers in CQRS?我们是否需要在 CQRS 中混合使用同步和异步命令处理程序?
【发布时间】:2023-03-19 06:20:01
【问题描述】:
  1. 用户在我们的站点上注册并登录。RegisterUserCommand 被发送到异步命令处理程序。
  2. 用户想要更改其地址,但尚未处理 RegisterUserCommand。系统中没有用户记录。

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

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

【问题讨论】:

    标签: cqrs


    【解决方案1】:

    一切都以异步方式运行。为了简单起见,队列是先进先出的;另外,每个分区有一个处理线程。这样命令总是按发送顺序处理。另外,我们仍然具有可扩展性,因为 每个分区的线程 可以简单地变成 每个分区的机器,而无需重新分区整个解决方案。

    在某些情况下,我们可能需要同步处理(在我的例子中,初始用户注册是用户注册,因为我们需要在服务器上验证一些内容才能让他继续操作)。在这种情况下,命令发送后,用户会看到“请稍等几秒钟,正在处理您的注册”。一旦注册被确认(或失败),用户就会被自动带到下一个屏幕。这对于 Web UI 中的 AJAX 来说是微不足道的。桌面 UI 更加简单。

    【讨论】:

    • 在同步处理的实例中,我假设您正在轮询读取存储以了解何时处理注册或是否发生错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多