gpt4 book ai didi

java - 如何在不知道标识符的情况下向聚合发送命令?

转载 作者:行者123 更新时间:2023-12-02 06:16:24 25 4
gpt4 key购买 nike

我对 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)来解决它在我的 Controller 中,如果我只知道电影标识符?

最佳答案

感谢@Zeljko Vujaklija 和@Mzzl 的提示!我调整了 MovieRating 聚合:

@Aggregate
class MovieRating {

@AggregateIdentifier
private MovieRatingsId movieRatingsId;

// the related movie
private MovieId movieId;

private Rating rating;

// omitted handlers, getters and setters
}

并且只需使用 movieId 即可查询电影相关的评分。一个简单的POSTmovies/<movieId>/ratings与 body 中的评级创建电影评级和 GET检索相关数据。甚至可以使用 /movies/<movieId>ratings/<ratingId> 编辑评级是有可能的。

关于java - 如何在不知道标识符的情况下向聚合发送命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55869503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com