Apache kafka 使用卡夫卡将信息发布到传奇的正确方式是什么?

Apache kafka 使用卡夫卡将信息发布到传奇的正确方式是什么?,apache-kafka,saga,Apache Kafka,Saga,我正在使用cqrs模式设计一个库。我使用中提到的方法将saga视为骨料 在这里,我有一个关于如何实现saga订阅的消息传递的问题 假设我在应用程序中有两个聚合,Account和MoneyTransferSaga。 TransferMoney命令将触发MoneySent事件,以减少帐户余额。 MoneySent事件将触发MoneyTransferSaga的创建,将ReceiveMoney命令发送到另一个帐户,以增加帐户余额 因此,我们可以看到MoneyTransferSaga正在订阅MoneySe

我正在使用cqrs模式设计一个库。我使用中提到的方法将saga视为骨料

在这里,我有一个关于如何实现saga订阅的消息传递的问题

假设我在应用程序中有两个聚合,Account和MoneyTransferSaga。 TransferMoney命令将触发MoneySent事件,以减少帐户余额。 MoneySent事件将触发MoneyTransferSaga的创建,将ReceiveMoney命令发送到另一个帐户,以增加帐户余额

因此,我们可以看到MoneyTransferSaga正在订阅MoneySent事件。我想问的问题是,什么是正确的方式来发送这个MoneySent事件的传奇

我使用kafka作为消息代理,这里我有用于帐户聚合的主题帐户命令和帐户事件

方法A:将MoneyTransferSaga标记为订阅“帐户事件”主题的另一个消费者群体。当即将发生的事件与类型“MoneySent”匹配时,触发saga事件处理程序。其他事件将被saga事件处理程序忽略

方法B:创建一个名为“汇款传奇事件”的主题。当事件被发送到account events时,account事件处理程序会将事件复制到主题“money transfer saga events”中。MoneyTransferSaga订阅的主题是“MoneyTransferSaga事件”,而不是“帐户事件”

我不确定哪种方法更好

使用方法A,saga实例将从account接收所有事件

使用方法B,账户服务必须知道MoneyTransferSaga的存在

谢谢