gpt4 book ai didi

nservicebus - 在 CQRS 系统中,我应该如何向用户表明他们的请求已收到?

转载 作者:行者123 更新时间:2023-12-02 23:41:43 28 4
gpt4 key购买 nike

我正在尝试解耦我们的大泥球架构的一些部分,并确定了几个边界,这些边界是使用 CQRS 提供更具弹性和可扩展性的解决方案的明显候选者。

典型示例:当客户下订单时,我们会在订单提交付款、销售系统批准等时阻止他们的线程。

这一切都可以异步处理 - 允许我们在支付处理系统不可用时接受订单并排队等 - 但我不确定应该如何管理客户的 UI 数据。

换句话说 - 他们下了订单。他们的订单排在队列中。如果他们五秒后重新登录帐户并点击“查看订单” - 会发生什么?

  • 如果我从中央存储库(或从基于该存储库更新的缓存)中提取它,那么用户将看不到他们的订单,并且可能会尝试再次放置它 - 或者给我们打电话并陷入 panic 。<
  • 如果我从本地数据库中提取它,那么我需要维护另一个订单数据库的开销 - 该数据库需要在负载平衡的环境中同步,并且似乎会破坏很多了解 CQRS 的优势。

我想在很多地方执行此操作 - 但并非所有这些操作都像确认订单一样重要;在某些情况下,就像客户更改电话号码或其他内容一样简单 - 因此并非所有情况我都可以说“非常感谢,我们会向您发送确认电子邮件” - 因为发送确认电子邮件 -对记录的每次修改都发送邮件让我觉得有点过分了。

我应该考虑什么模式或解决方案来帮助解决这个问题?

最佳答案

  • 值得考虑的是“用户”收件箱:用户可以在应用中查阅“正在进行的”命令的位置。当用户已经移至另一个屏幕但仍驻留在您的应用程序中时,您还可以将通知“推送”回用户的 UI。当用户重新登录时,这也可能是一个选项。
  • 另一种选择可能是伪造同步体验,即等待并在后台进行轮询,所有事情都是异步发生的。当然,这可能还涉及超时,但我认为这些也包含在当今的同步处理中。
  • 除此之外,您可能还希望告知最终用户并征求他们对您的应用及其行为的体验的反馈。
  • 无论别人告诉你什么,如果你想优雅地处理这件事,你需要付出一些努力。

关于nservicebus - 在 CQRS 系统中,我应该如何向用户表明他们的请求已收到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8020190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com