architecture - DDD 有界上下文通信消息总线

标签 architecture domain-driven-design bounded-contexts message-bus

我正在将不同的有界上下文与 Windows 服务总线集成,但有一些问题:

1) 如何检测其他有界上下文中的重复项?存储最后处理的消息序列?我希望能够重新触发事件,以允许重新同步新的有界上下文 HandleEvent(OrderPlaced orderPlaced, bool isReplay),这些上下文将在将来购买到生产中以进行初始同步。

2) 对于上下文间消息总线,我们是否会为每个有界上下文使用一个主题(并具有对有界上下文进行分组的命名空间)?或者每个命名空间一个有界上下文?

3) 消息总线文档说消息可能无序到达,应该使用什么算法按顺序重新组装?如果收到消息 6 和 8,但从未收到消息 7,会发生什么情况?我们会等待指定时间,然后继续吗?如何允许 self 修复?

4)我想上述内容在几乎所有 DDD 项目中都很常见,是否有任何库可以处理消息传递(包括命令/响应协议(protocol))以请求从外部有界上下文同步以前的事件?

最佳答案

这并不能回答您的大部分问题,但为您提供了另一种选择。

当我开始拉动事件而不是让事件推送给我时,很多问题就消失了。如果我正在拉动,我只需保留已处理的事件编号的检查点。当我需要重建时,我删除读取模型和检查点,新的读取模型将自动创建。由于我使用的是单个编写器,因此重复不是问题。订购也不是问题。

尽管如此,我们仍然有事件被推出 - 但这些仅用于 react 行为。例如;下订单后,打印票据。

这对您是否有意义,取决于您需要对事物使用react的速度,以及您需要数据的新鲜程度(1 秒与 30 秒等)。

关于architecture - DDD 有界上下文通信消息总线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25015426/

相关文章:

domain-driven-design - DDD - 如何处理 "returning domain events"模式中的事务?

namespaces - 在目录结构中明确上下文

orm - DDD - 使用 Doctrine 2 的有界上下文之间的关联映射

architecture - 3层模式和大量数据

java - 使用@PreAuthorize 的最佳实践

authentication - 如何在sails.js SPA 上处理多个身份验证策略?

c# - 我应该将 WCF 用于简单的文本有线协议(protocol)吗?

c# - 关于更新断开实体图的思考

domain-driven-design - DDD : Help me further understand Value Objects and Entities

domain-driven-design - DDD : one bounded context or two?