【发布时间】:2021-10-30 22:22:34
【问题描述】:
产品服务和 API 网关注册到发现服务。我使用 API Gateway 访问产品服务。
我正在学习为产品服务实施 CQRS 的课程。
在ProductService下,我有src/main/java/com/appsdeveloperblog/estore/ProductsService/command/ProductAggregate.java
这里的 ProductAggregate 是 CRQS 的 Command。
它有以下几种方法(详情请参考GitHub):
@CommandHandler
public ProductAggregate(CreateProductCommand createProductCommand) throws Exception {
...
}
@EventSourcingHandler
public void on(ProductCreatedEvent productCreatedEvent) {
...
}
它还有src/main/java/com/appsdeveloperblog/estore/ProductsService/query/ProductEventsHandler.java,将产品持久化在H2 db中。
我也实现了src/main/java/com/appsdeveloperblog/estore/ProductsService/query/ProductsQueryHandler.java,用于查询db。
这里 ProductsQueryHandler 是 CRQS 的 Query。
我的问题如下
- 我无法理解发布事件的生成方式和时间,以及消息何时放入 消息传递 队列。
- 另外,有没有可能数据被持久化到Event Store后,没有保存在Read DB中。如果是,那么我们如何同步 Read DB。
【问题讨论】:
标签: spring-boot microservices cqrs event-driven-design