Architecture 限定上下文通信消息总线

Architecture 限定上下文通信消息总线,architecture,domain-driven-design,bounded-contexts,message-bus,Architecture,Domain Driven Design,Bounded Contexts,Message Bus,我正在将不同的有界上下文与Windows Service Bus集成,有一些问题: 1) 如何在其他有界上下文中检测重复项?是否存储上次处理的消息序列?我希望能够重新触发事件,以允许重新同步新的绑定上下文HandleEvent(OrderPlaced OrderPlaced,bool isReplay),这些上下文将在将来购买到生产中进行初始同步 2) 对于上下文间消息总线,我们是否会对每个有界上下文使用一个主题(并使用名称空间对有界上下文进行分组)?或者每个名称空间有一个单一的有界上下文 3)

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

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

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

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


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

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

当我开始拉事件而不是把它们推给我时,这些问题就消失了。如果我拉,我只保留一个检查点的事件编号,我已经处理到。当我需要重建时,我移除读取模型和检查点,新的读取模型将自动创建。因为我使用的是一个编写器,所以复制不是问题。订购也不是问题

虽然我们仍然有一些事件被推出来,但这些事件只用于被动行为。例如下订单时,打印一张票据

这对您来说是否有意义,取决于您对事情的反应速度,以及您需要数据的新鲜程度(1秒与30秒等)