我有一个关于在 Axon 中映射 RESTful API 和聚合/实体的问题。
假设我们在电影领域,从封装在微服务中的电影上下文开始。我们有一个电影实体(聚合)和一堆相关的命令和事件。
@Aggregate
class Movie {
@AggregateIdentifier
private MovieId movieId;
// omitted handlers, getters and setters
}
相关的 URL 可能看起来像/movies/<movieId>
现在我想介绍一个用于电影评分的新上下文/微服务。电影评级与电影有关,电影不知道它们的存在。但最后我想通过它的 id 代表的电影来解决收视率问题。URL 可能如下所示/movies/<movieId>/ratings
所以实体可能看起来像这样:
@Aggregate
class MovieRatings {
@AggregateIdentifier
private MovieRatingsId movieRatingsId;
// the related movie
private MovieId movieId;
// a list of movie related ratings
private List<Rating> movieRatings;
// omitted handlers, getters and setters
}
问题是,在这里创建这样的聚合有意义吗?如果不是,那么基于 cqrs 的替代方案会是什么样子?如果是的话,如果我只知道电影标识符,我如何通过在我的控制器中触发的命令(例如 AddRating)来解决它?