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

时间:2014-07-29 12:33:18

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

我正在将不同的有界上下文与Windows Service Bus集成,并提出一些问题:

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

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

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

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

1 个答案:

答案 0 :(得分:1)

这并不能解答您的大多数问题,但会为您提供另一种选择。

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

我们仍然推出了事件 - 但这些仅用于被动行为。例如;下订单时,打印一张票。

这对你来说是否合理,取决于你对事物的反应速度,以及你需要多少新鲜数据(1秒对30秒等)。