我正在使用Spring Boot和RabbitMQ测试微服务架构。
我现在有两个小服务: UserRegistrationService(在db中注册用户) GetUserInfo(从同一个db返回用户)
我选择让所有特定于用户的服务使用相同的数据库。
这两项服务都使用实体" User"(JPA)。 (这可能不是最明智的方式)
有没有一种处理这种依赖的聪明方法? (两个服务依赖于同一个实体) 我应该将实体(用户)设置为单独的项目并使用工件库吗?
答案 0 :(得分:2)
是的,但您应该更进一步,将消息表示与数据库表示分离。定义一个API工件,其中只包含每个服务API中词汇表对象的简单DTO,并使用相关的后端对象实现参考这些DTO的消息驱动的POJO。 (如果你正在使用Spring Integration,你可以注册一个Spring转换器来自动来回映射。)
答案 1 :(得分:1)
是。为了更好的可重用性和易维护性,您可能需要将公共组件作为单独的jar工件发布,并将其作为每个微服务中的依赖项引用。
示例项目结构可以是这样的,