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

问题描述 投票:0回答:1

我有两个独立的Spring-Boot微服务,一个是命令端另一个是查询端,其中Mongodb中的命令服务存储事件并将事件放入RabbitMQ然后查询端将订阅队列和构建查询Modal.Now如何实现重放事件并构建查询Axon模态?是否有可能两个服务独立于不同的节点运行。如果不可能那么我应该遵循什么来实现它。

cqrs axon
1个回答
2
投票

如果您选择使用RabbitMQ来分发事件,您必须使用带有Subscribing Event Processors的Axon 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 Server: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

...是的,您的Command端可以独立于Query端(投影)进行部署。通过回复过去的所有事件,可以从头开始重新创建查询方。这将启用蓝绿色部署(投影数据库模式更改)。

最好,伊万

© www.soinside.com 2019 - 2024. All rights reserved.