music-story

MusicStory (音书)

一个结合了高品质音乐播放与优雅文字创作的文艺社区网站。


🛠️ 技术选型与基础架构


📂 项目模块结构

项目采用现代微核与依赖分层设计,模块划分清晰对齐:

MusicStory (根目录)
├── apps (应用层入口)
│   ├── admin-app (后台管理系统 API)
│   ├── web-app (前台用户端 API)
│   └── web-client (前端 Vue 3 独立客户端工程)
├── modules (业务领域模块)
│   ├── shared (基础公共定义、存储接口声明)
│   ├── user (用户领域模型与业务逻辑)
│   ├── content (文章、公告、轮播图内容领域)
│   ├── relation (社交关系与关注粉丝模块)
│   ├── notification (通知发送、WebSocket 与 RabbitMQ 消费)
│   ├── security (Spring Security 认证与安全配置)
│   └── search (基于 Elasticsearch 的全文搜索模块)
└── infrastructure (基础设施层依赖配置)
    ├── persistence (持久化配置,MyBatis-Plus 及 Druid 监控)
    ├── cache (Redis 缓存模板与配置)
    ├── messaging (RabbitMQ 连接与参数定义)
    ├── oss (基于 aws-java-sdk-s3 的抽象 S3 存储服务实现)
    └── observability (系统可观测性与健康度量指标,待扩充)

🚀 启动与部署准备

项目已添加 spring-boot-docker-compose 原生支持。启动主类时,Docker Compose 会自动拉取并启动 Redis、RabbitMQ、Elasticsearch 等底层容器。

1. RabbitMQ 延时队列插件安装

容器启动后,需要启用 RabbitMQ 的延时队列插件:

  1. 下载 rabbitmq_delayed_message_exchange 插件 (版本需与 RabbitMQ 匹配),下载地址:RabbitMQ Community Plugins。
  2. 将下载的插件拷贝进容器:
    docker cp rabbitmq_delayed_message_exchange-3.10.2.ez rabbitmq:/plugins
    
  3. 进入容器启用插件并重启:
    docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_delayed_message_exchange
    

2. 数据库初始化

项目包含 data.sql 文件,启动 MySQL 容器后导入该 SQL 文件即可完成初始数据的填充。


🔧 已修复的重大技术问题与重构

在最新版本中,我们对以下历史遗留问题和痛点进行了彻底修复与重构:


🌟 特别鸣谢

感谢 JetBrains 免费提供 IntelliJ IDEA 开发工具对本项目的支持。 JetBrains