这是一个基于Spring Boot和RabbitMQ构建的异步订单处理系统,实现了订单管理、支付处理、库存管理和物流跟踪等核心功能。
本系统采用微服务设计理念,通过消息队列实现服务间的异步通信:
- 订单服务:处理订单创建、查询和状态管理
- 支付服务:处理支付请求和回调
- 库存服务:管理商品库存和扣减逻辑
- 物流服务:处理发货和物流跟踪信息
各服务通过RabbitMQ进行异步通信,确保系统的高可用性和可扩展性。
- 订单创建与查询
- 订单状态跟踪
- 订单取消与退款
- 多种支付方式支持(支付宝、微信、信用卡、银行转账)
- 支付回调处理
- 支付状态同步
- 商品库存查询
- 订单触发的库存扣减
- 库存调整与初始化
- 发货单生成
- 物流信息跟踪
- 物流状态更新
- 后端框架:Spring Boot 3.x
- 安全框架:Spring Security + JWT
- 数据库:MySQL 8.x
- ORM框架:MyBatis-Plus
- 消息队列:RabbitMQ
- API文档:SpringDoc OpenAPI
- 构建工具:Maven
系统通过RabbitMQ实现服务间异步通信,确保高并发场景下的系统稳定性:
// 消息消费者示例
@RabbitListener(queues = "${rabbitmq.queue.payment.success:payment.success.queue}", ackMode = "MANUAL")
@Transactional
public void handlePaymentSuccessMessage(Message message, Channel channel) {
// 处理支付成功消息
}系统实现了基于Outbox模式的消息可靠性保证:
- 消息持久化存储
- 发送状态跟踪
- 失败重试机制
- 死信队列处理
所有关键业务操作都有详细日志记录,便于问题排查和系统监控。
主要数据表包括:
orders:订单主表order_items:订单明细表payments:支付记录表inventories:库存表inventory_histories:库存变更历史表fulfillments:发货单表shipment_tracks:物流轨迹表outbox_messages:消息发件箱表dead_letter_messages:死信消息表
spring:
datasource:
url: jdbc:mysql://localhost:3306/order_system
username: root
password: rootspring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest- 确保安装并启动MySQL和RabbitMQ服务
- 执行db.sql脚本创建数据库表
- 配置application.yml中的数据库和消息队列连接信息
- 使用Maven构建项目:
mvn clean package - 运行应用:
java -jar target/order-system-*.jar
系统采用JWT Token进行API安全验证:
- 所有API请求需要在Header中携带有效的Authorization Token
- Token通过用户登录接口获取
- 不同用户角色具有不同的API访问权限
- 系统通过Logback记录详细运行日志
- 关键业务操作都有INFO级别日志记录
- 异常情况会记录ERROR级别日志便于问题排查
- 可通过日志分析系统运行状态和性能瓶颈
- 服务间通过消息队列解耦,便于独立扩展
- 数据库表设计考虑了水平分表扩展需求
- 支持多实例部署实现负载均衡
- 消息处理具有幂等性,支持重复消费
- 系统启动前确保MySQL和RabbitMQ服务正常运行
- 首次运行需要执行数据库初始化脚本
- 生产环境建议修改默认的用户名密码
- 根据实际业务需求调整消息队列配置参数