kafka中每个Aggregate Root事件的单个或多个主题(流)

Faj*_*rmf 9 domain-driven-design event-sourcing apache-kafka

Order聚合根能够发射多种Event,例如OrderCreated,OrderPaid,OrderCancelled.会是不错的设计,所有类型的订单事件的存储到单一卡夫卡的话题,有orderId作为的消息密钥,如建议在这里?或者我应该为每个人创建一个sepparate主题?

拥有单一主题的专家是维持事件的顺序,但消费者需要在他们的结尾过滤一些事件.第二种方法的专家是消费者会更简单,因为他们可以订阅他们需要的确切主题,但构建Order需要订阅多个主题,而他们不是来自正确序列的kafka,因为它们来自不同的主题.

谢谢

Ale*_*ini 3

我不确定是否有正确/错误的问题,但是这是我的两便士的价值:

  • 我的经验法则是为每个有界上下文指定一个主题,以在管理方便性和侦听器接收的事件数量之间取得平衡
  • 无论如何,事件都需要排序,以便它们以正确的顺序存储在 EventStore 中。将sequenceId 添加到您的事件并使用Resequencer(例如在Camel 中)来确保侦听器以正确的顺序处理事件。

希望对您的项目有所帮助和良好的外观。