- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
考虑情况:
public class OrderController {
IBus bus;
public OrderController(IBus bus) {
this.bus = bus;
}
public ActionResult Checkout(String orderId) {
var command = new CheckoutOrderCommand(orderId);
bus.Send(command);
return Redirect("on-success-url");
}
}
相应的命令处理程序(在单独的程序集中定义)正在等待处理传入消息。
但是我们已经说过发送一切正常return Redirect("on-success-url");
如果处理程序无法保存对域的更改怎么办?
好吧,可以在命令处理程序端使用队列来发布响应,将 Web 应用程序订阅到队列。
最终用户如何获得即时/同步的 UI 响应,以反射(reflect)对域所做的真实更改?我应该这样做吗?
通过消息总线处理传入命令是否只适用于后台任务而不需要确认?
最佳答案
这取自«Busting some CQRS myths», Jimmy Bogard blog您可能感兴趣:
Myth #4 – Commands are fire-and-forget
How many business processes in your line of work are truly fire and forget? You typically need at least a synchronous acknowledgement that the command was received and accepted. If you’re doing an async send of the command, how do you notify the user? Email? Are they OK with this?
Instead, with commands that need heavy lifting to fulfill the request, we really have two things going on:
- Accepting the request
- Fulfilling the request
Accepting the request should be synchronous. Fulfilling need not be. But for the model of an asynchronous fulfillment, we still will likely need ways of correlating requests etc., and this is where you often see workflows/processes/sagas come into play.
我总是尝试让我的命令同步。如果流程时间很长,我会使用流程管理器或 saga 之类的东西。
关于c# - 处理排队的命令处理程序响应。 CQRS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29027074/
我了解了 CQRS 的一般概念,但是当涉及到超越示例代码和幻灯片以处理现实世界问题时,我有一些问题。 验证 当您需要对涉及检查数据库值的命令进行验证时,您会怎么做? 注册一项服务,我必须输入一个唯一的
我目前正在尝试了解如何构建事件存储的内部结构。到目前为止我得到了什么: 一个事件存储有两个表(集合,...),一个用于聚合,一个用于事件。 聚合表包含以下数据:aggregateId (可能是一个 G
我最近阅读了很多关于 CQRS 的文章,对我来说,它似乎与 Event Sourcing 密切相关。 但就像这个答案说的https://stackoverflow.com/a/9217461/2770
我有 CQRS+ES 设计的应用程序。这是我在过去一年里一直在 CQRS+ES 世界中阅读的新内容,它非常有意义,但实现完美的意义并不总是那么容易。 无论如何,我的一个或多个问题是: 包含多个命令(步
我想知道如何在 CQRS 中创建多个聚合根。 示例:我有一个手机聚合根和 Simcard 聚合根。身份证 这些聚合应该是订阅聚合根的一部分。 我需要创建一个基于 SimCard 的订阅聚合,并且系统中
用户在我们的站点上注册并登录。RegisterUserCommand 被发送到异步命令处理程序。 用户想要更改他们的地址,但 RegisterUserCommand 尚未处理。系统中没有用户记录。 这
事件溯源和 CQRS 很棒,因为它使开发人员摆脱了一个预先建模的数据库的困扰,除非有大数据迁移项目,否则开发人员必须在应用程序的整个生命周期中使用该数据库。 CQRS 和 ES 还具有其他好处,例如扩
我想我理解了 ES + CQRS 上下文中读取模型的思想(如果不正确请指正)。然而,我对在“严肃”报道的背景下使用它仍有一些疑问。假设我使用关系数据库和一些 ORM 来处理我的读取模型。一个基本的“摘
我正在使用 Akka 持久性实现 CQRS 系统,并且我正在尝试了解 CQRS 的请求响应位。 关于如何将响应发送回客户端和 this article 的答案很少。还提到了一些不错的模式。但是,不是使
在基于 CQRS/ES 的系统中,您将事件存储在事件存储中。这些事件涉及一个聚合,并且它们相对于它们所属的聚合有一个顺序。此外,聚合是一致性/事务边界,这意味着任何事务保证仅在每个聚合级别上给出。 现
根据CQRS à la Greg Young ,事件处理程序(和下游事件反规范化器)对事件发布者之前发布的传入事件使用react。 现在让我们假设在运行时我们想要添加一个新的事件反规范化器:基本上,这
是否存在单个命令导致 CQRS 中有多个事件的情况?任何人都可以举一个例子吗? 我问是因为聚合是事务边界,编写聚合的实现取决于这个问题的答案。 最佳答案 是的,例如考虑命令 AssignUserToG
大概我们可以通过应用相同的命令集来恢复状态,那么为什么不简单地存储命令而不是事件呢? 最佳答案 事件,传达“这发生在我们的系统中”。当一个命令被接受和处理时,事件就会发生。没有人可以拒绝或改变它发生的
我正在学习什么是CQRS模式,并了解到还有CQS模式。 当我尝试搜索时,我发现了很多关于CQRS的图表和信息,但没有找到太多关于CQS的信息。 CQRS 模式中的关键点 在 CQRS 中,有一种要写入
我的CQRS / ES设计中有时间问题。为了便于讨论,让我们基于Microsoft的 有关此主题的示例, session 管理(https://msdn.microsoft.com/en-us/lib
我只是想知道我将尝试实现的设计是否有效 CQRS。 我将有一个查询处理程序,它本身会向其他子处理程序发送更多查询。它的主要任务是聚合来自多个服务的结果。 从处理程序内部发送查询可以吗?我已经可以在我的
我第一次尝试使用 CQRS 和事件溯源,我有几点需要一些指导。我想实现一个 SO 风格的声誉系统。这似乎非常适合这种架构。 以 SO 为例。假设一个问题被投票,这会生成一个 UpvoteCommand
我的问题与this one有关.虽然相关的问题和答案说明了我们为什么要将它们分开,但我想确保我对意图的理解是正确的。在我见过的所有示例中,命令的意图似乎是它可以被拒绝,并且它更新内存中的对象,然后事件
这更像是一个与 CQRS 和 Axon 相关的理论问题。下面是一个不言自明的设置,代码是 伪代码 ,它并不意味着编译。 假设为了处理来自聚合“Foo”的命令,我们首先需要查询另一个聚合“Bar”的状态
亲们,我正在考虑将 Dapper.net 等 microORM 用于 CQRS 应用程序 (Asp.Net MVC) 的读取访问组件,并使用 Entity Framework 来操作域。 这是 CQR
我是一名优秀的程序员,十分优秀!