如何通过使用来自kafka主题的消息而不是通过Rest API创建命令

时间:2019-07-11 20:08:21

标签: axon

我正在使用Axon版本(3.3),该版本通过使用SpringBoot Main类中的注释无缝支持Kafka。

@SpringBootApplication(exclude = KafkaAutoConfiguration.class)

在我们的用例中,命令端微服务需要从kafka主题中选择消息,而不是将其公开为Rest api。它将事件存储在事件存储中,然后将其移动到另一个kafka主题,以供查询端微服务使用。

由于禁用了KafkaAutoCOnfiguration,因此无法使用spring-kafka配置来编写使用者。如何在Axon中使用普通邮件?

我尝试编写一个普通的Kafka spring消费者,但由于Kafka Auto COnguguration已禁用,因此该命令的初始触发器未从Kafka主题中获取

1 个答案:

答案 0 :(得分:1)

我想我可以帮你解决这个问题。

Axon Kafka Extension仅用于活动。 因此,无意将命令或查询从一个节点分发到另一个节点。

这是非常有意的,因为事件消息对命令和查询消息有不同的路由需求。 Axon认为Kafka非常适合作为事件总线,因此框架对此提供了支持。 但是,它对于Command消息(应始终路由到单个处理程序)或Query消息(可以路由到单个处理程序,多个处理程序或具有订阅模型)来说并不理想。

因此,我想与Axon一起“滥用” Kafka来处理不同类型的消息,因此您必须为其编写自己的组件/服务。 但是,我会坚持使用消息传递范例并将这些关注点分开。

为了在Axon应用程序之间路由消息时大大简化,我强烈建议尝试Axon Server。 此外,here可以听到/看到Allard Buijze指出每种消息类型的路由需求(这就是Axon的Kafka Extension只处理事件消息的原因)。