- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 dddd 实现一个事件源系统。目前,我正在努力了解我的事件如何以及在何处跨越限界上下文的边界。
假设有两个限界上下文:
产品管理拥有关于产品的所有知识。为了简化,它只是“名称”。物流系统也有产品,但不知道它们的元数据。对于他们来说,它主要只是一个带有 Id 的物理盒子。但是当有人扫描这个产品时,他们也想显示这个名字。因此,产品管理 BC 应通知物流 BC,产品已注册且名称已更改。所以我将以 ProductManagement 中的事件结束,这些事件是从 ProductAggregate 内部引发的:
ProductManagement.Events.ProductRegistered
ProductManagement.Events.ProductNameChanged
当我正确理解这些是我将保存到事件存储中的事件。这些也是将发布到消息总线中的事件。所以在后勤方面我会订阅这些事件。到目前为止一切顺利。
现在的问题是:我将如何在物流方面处理此事件? Vaughn Vernon 在一次演讲中说,最好的做法是在应用层有一个事件处理程序,所以它基本上是一个应用程序服务。他还说,最好将其转化为一个或多个命令。我是否再次在物流方面保存所有收到的事件?我是否也保存命令?如果出现问题,我如何重现当前状态?或者我怎么知道,这不是接收限界上下文中处理的错误,而是错误事件。如果我的转换命令被拒绝,我该怎么办?
我知道在物流方面没有计算或聚合变化。但我认为这对我的问题并不重要。
最佳答案
这里有几件事。
首先,您不必导入有关名称更改的物流 BC。您可以在需要时从客户端的 PM BC 获取此信息。这通常由某种复合 UI 完成。 UI 组合可以在客户端或(Web)服务器上完成。您可能需要查看文章 The secret of better UI composition Mauro Servienti 对此进行了描述。
但一般来说,这通常是这样工作的:
域事件 -> 发布/订阅 -> 消息消费者 -> 命令 -> 域命令处理程序
所以,
RegisterProduct
命令发送到同一个 BCProduct
聚合它不仅在事件源系统中如此工作,而且在使用事件驱动架构的具有多个服务的任何系统中也是如此。
关于event-handling - 限界上下文内部和外部的 EventSourcing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41855075/
我正在使用 https://github.com/streamdataio/eventsource-android/ 的 EventSource REPO我创建了一个 onConnect ();方法,
我正在开发一个由三个 Windows 服务和几个普通 Windows 应用程序 (.exe) 组成的大型产品。现在我们要转移到 ETW 和语义日志记录,并使用 Microsoft.Diagnostic
我正在研究使用 DDD+CQRS+EventSourcing 制作应用程序,但在弄清楚如何进行用户身份验证时遇到了一些麻烦。 用户本质上是我领域的一部分,因为他们对客户负责。我正在使用 ASP.NET
从 EventSource 开始API 我写的最学术的例子。 问题是我总是出错,我找不到任何有用的信息。当我加载 home.html , JS 脚本停在 source.onerror ;我将它打印到控
我不知道如何使用 JavaScript 从 EventSource 捕获事件。我正在这样做,但是“正在运行”永远不会出现在控制台中。 var es = new EventSource(
我创建了一个自托管 ServiceStack 服务,该服务基于其 showcase chat application 在 Windows 服务中运行。 。 但是,我没有进一步讨论的是尝试将客户端编写为
我正在使用 EventSource 登录到 ETW。我们正在使用 .Net Framework 4.5。 由于我处于开发的初级阶段,我将经常更改我的 EventSource 子类中的方法签名。我真的不
我正在使用 EventSource 在我的库中记录事件。该库是跨平台的,这意味着它可以被 linux/mac 用户使用。我知道 EventSource 在 Windows 上是如何工作的。用户可以使用
对 EventSource 行为有点困惑。 它连接良好并保持连接状态,直到收到第一条消息。 当我发送一条 data: something\n\n 消息时,连接断开并创建新连接。 使用 Content-
我在项目前端使用 JavaScript EventSource。 有时,浏览器和服务器之间的连接失败或服务器崩溃。在这些情况下,EventSource 会在 3 秒后尝试重新连接,如文档中所述。 但它
我正在尝试创建一个页面,该页面使用 EvenSource 对象(在 javascript 中)来创建服务器发送事件( cometd )。我阅读了很多关于它的教程,但没有找到可以解释以下问题的教程: 当
我正在尝试在我的新项目中使用 CQRS 和 EventSorcing。我正在遵循 Greg Young 几年前建议的方式(Mark Nijhof 实现 - http://cre8ivethought.
我有一个使用 EventSourcing 的 DDD 项目。目前有许多聚合根,其中许多都有实体的集合。甚至更多 - 一些实体具有其他实体的集合。 问题:出于审计目的读取 EventSourcing 事
我正在尝试为 Yesod 中的网站构建聊天功能,我希望它有一个所有已连接用户的列表。我认为最好的方法是将人员添加到连接上的用户列表中,并在他们离开时将其删除。如果保持连接打开,响应似乎应该阻塞,所以我
我有一个用例,我想发布一个非状态更改事件作为触发器。 In the vast majority of cases, the Aggregates will publish events by ap
我正在尝试使用 dddd 实现一个事件源系统。目前,我正在努力了解我的事件如何以及在何处跨越限界上下文的边界。 假设有两个限界上下文: 产品管理 物流系统 产品管理拥有关于产品的所有知识。为了简化,它
TL;DR 更新:无论是从客户端关闭 EventSource 还是完全关闭客户端,php 都会继续在后端执行并且无法报告 connection_aborted() 的正确值.为什么会这样? 我一直在
我正在尝试实现 Server Sent Events使用 Spring SseEmitter如本 Youtube video 中所述. 我能够启动事件流并从服务器发送的事件中接收数据。 但是,我可以看
我正在实现 FullCalendar 作为我的团队的假期日历。我希望团队中的每个成员的项目都有不同的颜色,因此我使用 ajax 请求从数据库中提取列表。我想知道如何将此列表组合到事件数组中以创建 ev
刚刚将我的 fullcalendar 更新到 1.6.3,将 jQuery 更新到 1.10.2突然我的日历不再显示来自“eventSources”的事件。我在文档中找不到任何说明需要更改的内容。为了
我是一名优秀的程序员,十分优秀!