如何在轴突中实现重播事件?

  • 本文关键字:事件 实现 cqrs axon
  • 更新时间 :
  • 英文 :


我有两个独立的 Spring 启动微服务,一个是命令端 另一个是查询端,命令服务将事件存储在 Mongodb 中并将事件放在 RabbitMQ 中,然后查询端将订阅队列并构建查询模式。 两个服务是否可以在不同节点上独立运行。如果不可能,那么我应该遵循什么来实现这一点。

如果您选择使用RabbitMQ 来分发事件,则必须使用 AxonSubscribing Event ProcessorsSubscribableMessageSource作为源 - https://docs.axoniq.io/reference-guide/extensions/spring-amqp#reading-events-from-an-amqp-queue

只有Tracking Event Processor支持重播事件 - https://docs.axoniq.io/reference-guide/configuring-infrastructure-components/event-processing/event-processors#replaying-events

考虑使用 Axon Server 或 Kafka 来分发事件。它们支持跟踪处理器(以及自动回复选项)。

您可以在此处找到一些示例:

轴心服务器:https://github.com/idugalic/digital-restaurant/blob/master/drestaurant-apps/drestaurant-microservices-rest-2/drestaurant-microservices-rest-2-query/src/main/kotlin/com/drestaurant/query/handler/RestaurantHandler.kt

卡夫卡:https://github.com/idugalic/digital-restaurant/blob/master/drestaurant-apps/drestaurant-microservices/drestaurant-microservices-query/src/main/kotlin/com/drestaurant/query/handler/RestaurantEventHandler.kt

。是的,命令端可以独立于查询端(投影)进行部署。可以通过回复过去的所有事件从头开始重新创建查询端。这将启用蓝绿部署(投影数据库架构发生变化)。

最好 伊凡

最新更新