2

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

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

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

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

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

4

1 回答 1

2

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

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

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

这对您是否有意义,取决于您需要多快对事物做出反应,以及您需要多新鲜的数据(1 秒与 30 秒等)。

于 2014-07-30T07:05:30.513 回答