如何在Axon中实现重播事件?

时间:2019-04-29 12:36:09

标签: cqrs axon

我有两个独立的Spring-Boot微服务,一个是命令端,另一个是查询端,命令服务将事件存储在Mongodb中并将事件放到RabbitMQ中,然后查询端将订阅队列并构建查询模态。现在如何实现重播事件并在Axon中建立查询模态?两种服务都可以在不同节点上独立运行吗?如果不可能的话,我应该怎么做才能做到这一点。

1 个答案:

答案 0 :(得分:2)

如果您选择使用RabbitMQ分发事件,则必须使用Axon Subscribing Event Processors,其中SubscribableMessageSource作为来源-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分发事件。它们支持跟踪处理器(以及自动答复选项)。

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

Axon服务器: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

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

...并且是的,可以独立于查询端(投影)部署命令端。通过答复过去的所有事件,可以从头开始重新创建查询方。这将启用蓝绿色部署(更改投影数据库架构)。

最好, 伊万

相关问题