我的 Order
聚合根能够发出几个 Event
,例如。 OrderCreated
, OrderPaid
, OrderCancelled
. 将所有类型的订单事件存储到单个Kafka主题中,并具有 orderId
作为消息键,就像这里建议的那样?或者我应该为每个人创建一个单独的主题?
拥有单一主题的好处是保持了事件的顺序,但是消费者需要在事件的最后过滤一些事件。第二种方法的优点是消费者会更简单,因为他们可以订阅他们需要的确切主题,但是 Order
需要订阅多个主题,而他们不是来自Kafka在正确的顺序,因为他们是从不同的主题。
谢谢您
1条答案
按热度按时间1cosmwyk1#
我不确定是否有对/错的问题,不过这是我的两便士:
我的经验法则是针对每个有限上下文的一个主题,以便在管理的方便性和听众接收到的事件数量之间取得平衡
无论如何,事件都需要排序,以便它们以正确的顺序存储在eventstore中。向事件中添加一个sequenceid,并使用重排序器(例如camel)确保侦听器以正确的顺序处理事件。
希望对您的项目有帮助和良好的外观。