【发布时间】:2019-03-05 19:47:00
【问题描述】:
我是 Mass Transit 的新手,我想了解它是否对我的方案有帮助。 我正在构建一个使用 CQRS 事件源架构实现的示例应用程序,并且我需要一个服务总线,以便将命令堆栈创建的事件分派到查询堆栈非规范化器。
假设我们的域中有一个聚合,我们称之为 Photo,以及两个不同的域事件:PhotoUploaded 和 PhotoArchived。
在这种情况下,我们有两种不同的消息类型,默认的 Mass Transit 行为是创建两个不同的 RabbitMq 交换:一个用于 PhotoUploaded 消息类型,另一个用于 PhotoArchived 消息类型。
让我们假设有一个名为 PhotoDenormalizer 的反规范化器:该服务将成为两种消息类型的消费者,因为无论何时上传或存档照片,都必须更新照片读取模型。
给定默认的 Mass Transit 拓扑,将有两个不同的交换,因此无法保证不同类型的事件之间的消息处理顺序:我们唯一能保证的是所有相同类型的事件都会按顺序处理,但我们不能保证不同类型事件之间的处理顺序(请注意,鉴于我的示例的事件语义,处理顺序很重要)。
我该如何处理这种情况?捷运适合我的需要吗?我是否完全错过了域事件调度的重点?
【问题讨论】:
标签: rabbitmq cqrs servicebus event-sourcing masstransit