基于Spring Boot微服务框架和DDD领域建模思想,构建货物运输系统(Cargo Tracker application)的完整微服务应用。
该实现采用基于微服务的架构风格,并使用以下技术:
基于DDD领域建模思想;采用Spring Boot微服务框架;基于Spring Cloud Stream组件构建消息驱动的微服务应用;RabbitMQ作为微服务消息中间件;Spring Data作为数据管理平台;
其中包含了4个微服务子工程:
1. 预订微服务 bookingms:负责与货物预订相关的所有操作。
2. 运输微服务routingms:该微服务负责与货物路线相关的所有操作。
3. 跟踪微服务trackingms:该微服务负责与货物相关的所有跟踪操作。
4. 装卸微服务handlingms:该微服务负责与货物相关的所有装卸操作。
微服务模块内部代码以六边形架构和CQRS(命令查询职责分离)架构设计:
domain:DDD领域模型,其中有aggregates、command、entities和valueobjects等子模块。application:放置应用服务,命令和查询服务分离在这里。其中有CargoBookingCommandService,这是CQRS的命令服务;CargoBookingQueryService是CQRS文凭查询服务;CargoEventPublisherService是用于向RabbitMQ消息系统发送消息的消息发布者;应用服务主要是与CQRS和消息系统相关的工具或SPI类。infrastructure: 放置数据库仓储、以及与消息系统相关,这里基础设施包主要是直接与数据库和消息系统技术相关的SPI或帮助类。interfaces: REST API接口以及相关DTO或事件。这里放置提供被调用的API相关类,包括DTO,领域模型对象不应该直接被外部调用引用,应该转为DTO供外界使用。
在《DDD领域驱动设计-货物运输系统》技术专栏中,包含对上述开源项目的详细代码和功能介绍、DDD领域模型设计、搭建MySQL和RabbitMQ运行环境、运行调试和Bug修复等等。欢迎访问和交流。
联系客服