【问题标题】:How to create command by consuming message from kafka topic rather than through Rest API如何通过使用来自 kafka 主题的消息而不是通过 Rest API 创建命令
【发布时间】:2019-07-12 15:57:49
【问题描述】:

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

@SpringBootApplication(exclude = KafkaAutoConfiguration.class)

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

由于 KafkaAutoCONfiguration 被禁用,我无法使用 spring-kafka 配置来编写消费者。如何在 Axon 中使用普通消息?

我尝试编写一个普通的 Kafka spring Consumer,但由于 Kafka 自动配置被禁用,因此不会从 Kafka 主题中获取命令的初始触发器

【问题讨论】:

    标签: axon


    【解决方案1】:

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

    Axon Kafka 扩展仅适用于事件。 因此,它不打算将命令或查询从一个节点分派到另一个节点。

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

    因此,如果您想将 Kafka 与 Axon 一起“滥用”处理不同类型的消息,您将不得不为它编写自己的组件/服务。 但是,我会坚持消息传递范式并将这些问题分开。

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

    【讨论】:

      猜你喜欢
      • 2016-01-20
      • 2016-03-24
      • 1970-01-01
      • 2015-01-18
      • 2021-12-18
      • 2021-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多