kafka中每个聚合根事件的单个或多个主题(流)

vcudknz3  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(372)

我的 Order 聚合根能够发出几个 Event ,例如。 OrderCreated , OrderPaid , OrderCancelled . 将所有类型的订单事件存储到单个Kafka主题中,并具有 orderId 作为消息键,就像这里建议的那样?或者我应该为每个人创建一个单独的主题?
拥有单一主题的好处是保持了事件的顺序,但是消费者需要在事件的最后过滤一些事件。第二种方法的优点是消费者会更简单,因为他们可以订阅他们需要的确切主题,但是 Order 需要订阅多个主题,而他们不是来自Kafka在正确的顺序,因为他们是从不同的主题。
谢谢您

1cosmwyk

1cosmwyk1#

我不确定是否有对/错的问题,不过这是我的两便士:
我的经验法则是针对每个有限上下文的一个主题,以便在管理的方便性和听众接收到的事件数量之间取得平衡
无论如何,事件都需要排序,以便它们以正确的顺序存储在eventstore中。向事件中添加一个sequenceid,并使用重排序器(例如camel)确保侦听器以正确的顺序处理事件。
希望对您的项目有帮助和良好的外观。

相关问题