2

我正在使用 Spring Boot 和 RabbitMQ 测试微服务架构。

我现在有两个小服务: UserRegistrationService(在数据库中注册用户) GetUserInfo(从同一个数据库返回用户)

我选择让所有用户特定的服务使用相同的数据库。

这两项服务都使用实体“用户”(JPA)。(这可能不是最聪明的方法)

有处理这种依赖的聪明方法吗?(两个服务依赖于同一个实体)我应该让实体(用户)成为一个单独的项目并使用工件存储库吗?

4

2 回答 2

2

是的,但您应该更进一步,将消息表示与数据库表示分离。为每个服务 API 中的词汇对象定义一个仅包含普通 DTO 的 API 工件,并使用任何相关的后端对象来参考这些 DTO 实现消息驱动的 POJO。(如果您使用的是 Spring 集成,则只需注册一个 Spring 转换器即可自动来回映射。)

于 2015-01-01T02:39:16.417 回答
1

是的。为了更好的可重用性和易于维护,您可能需要将公共组件发布为单独的 jar 工件,并将其作为每个微服务中的依赖项。

示例项目结构可以是这样的,

在此处输入图像描述

于 2015-01-01T01:27:53.467 回答