# Mini-Austin-Java **Repository Path**: 34384878/mini-austin-java ## Basic Information - **Project Name**: Mini-Austin-Java - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-06 - **Last Updated**: 2026-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mini Austin - 轻量级消息推送平台 > Austin 消息推送平台的精简版,基于 Spring Boot 3.x + Java 17 实现 ## 项目简介 Mini Austin 是参考 [Austin](https://gitee.com/zhongfucheng/austin) 项目设计的轻量级消息推送中间件,保留核心功能,简化部署和运维。 ## 特性 - ✅ **多渠道支持** - 邮件、钉钉、企业微信、飞书、Server酱、短信 - ✅ **Handler 设计模式** - 参考 Austin 的 Handler 机制 - ✅ **异步发送** - 基于 Spring 异步线程池 - ✅ **消息持久化** - 消息记录完整保存 - ✅ **RESTful API** - 标准的 HTTP 接口 - ✅ **API 文档** - 集成 Knife4j,在线调试 - ✅ **轻量部署** - 支持 H2/MySQL/SQLite - ✅ **实时推送** - WebSocket 支持 - ✅ **队列支持** - Redis 消息队列(可选) - ✅ **失败重试** - 自动重试失败消息 - ✅ **模板系统** - 消息模板管理 - ✅ **统计分析** - 消息发送统计 - ✅ **限流保护** - API 接口限流 ## 技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Java | 17 | LTS 版本 | | Spring Boot | 3.2.0 | 最新稳定版 | | MyBatis Plus | 3.5.5 | 增强的 ORM 框架 | | H2 Database | - | 开发环境默认数据库 | | Knife4j | 4.5.0 | API 文档增强 | | Hutool | 5.8.23 | Java 工具库 | | WebSocket | - | 实时消息推送 | | Redis | - | 消息队列(可选) | ## 快速开始 ### 前置要求 - JDK 17+ (当前系统使用 Java 8,请升级) - Maven 3.6+ **重要提示**: 项目编译需要 JDK 17 或更高版本。请先安装 JDK 17: ```bash # macOS (使用 Homebrew) brew install openjdk@17 # 设置 JAVA_HOME export JAVA_HOME=$(/usr/libexec/java_home -v 17) ``` ### 运行项目 ```bash # 克隆项目 git clone https://github.com/your-org/mini-austin.git cd mini-austin # 运行项目 mvn spring-boot:run # 访问 API 文档 open http://localhost:8081/api/doc.html ``` ### 打包部署 ```bash # 打包 mvn clean package # 运行 java -jar target/mini-austin-1.0.0-SNAPSHOT.jar ``` ## 快速开始 ### 访问 Web 管理界面 启动项目后,访问 Web 管理界面: ``` http://localhost:8081/admin/ ``` **功能特性**: - 🎨 现代化 UI 设计(支持深色模式) - 📊 实时统计数据 - 📤 快速发送消息 - 🔧 渠道配置管理 - 📝 消息查询和统计 ## API 使用示例 ### 1. 发送邮件 ```bash curl -X POST http://localhost:8081/api/v1/message/send \ -H "Content-Type: application/json" \ -d '{ "channel": "email", "receiver": "user@example.com", "title": "测试邮件", "content": "这是一封测试邮件" }' ``` ### 2. 发送钉钉消息 ```bash curl -X POST http://localhost:8081/api/v1/message/send \ -H "Content-Type: application/json" \ -d '{ "channel": "dingtalk", "receiver": "https://oapi.dingtalk.com/robot/send?access_token=xxx", "title": "服务告警", "content": "检测到服务异常" }' ``` ### 3. 批量发送 ```bash curl -X POST http://localhost:8081/api/v1/message/sendBatch \ -H "Content-Type: application/json" \ -d '{ "channel": "email", "receivers": ["user1@example.com", "user2@example.com"], "title": "系统通知", "content": "系统将在今晚维护" }' ``` ### 4. 查询消息列表 ```bash curl http://localhost:8081/api/v1/message/list?current=1&size=20 ``` ### 5. 发送飞书消息 ```bash curl -X POST http://localhost:8081/api/v1/message/send \ -H "Content-Type: application/json" \ -d '{ "channel": "feishu", "receiver": "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx", "title": "测试消息", "content": "这是一条测试消息" }' ``` ### 6. WebSocket 实时推送 ```javascript // 建立 WebSocket 连接 const ws = new WebSocket('ws://localhost:8081/api/ws/message'); ws.onmessage = function(event) { const data = JSON.parse(event.data); console.log('收到消息:', data); }; ``` ### 7. 查询统计信息 ```bash curl http://localhost:8081/api/v1/system/statistics ``` ## 项目结构 ``` mini-austin/ ├── src/main/java/com/austin/ │ ├── AustinApplication.java # 启动类 │ ├── controller/ # 控制器层 │ │ ├── MessageController.java # 消息发送 │ │ └── MessageQueryController.java # 消息查询 │ ├── service/ # 服务层 │ │ ├── MessageService.java │ │ └── impl/ │ │ └── MessageServiceImpl.java │ ├── handler/ # 处理器(参考 Austin) │ │ ├── MessageHandler.java # Handler 接口 │ │ ├── AbstractMessageHandler.java # 抽象 Handler │ │ └── impl/ │ │ ├── EmailMessageHandler.java │ │ ├── DingTalkMessageHandler.java │ │ └── WeChatMessageHandler.java │ ├── domain/ # 领域模型 │ │ ├── Message.java │ │ ├── ChannelConfig.java │ │ ├── SendRequest.java │ │ └── SendResponse.java │ ├── mapper/ # 数据访问层 │ │ ├── MessageMapper.java │ │ └── ChannelConfigMapper.java │ ├── config/ # 配置类 │ │ ├── MyBatisPlusConfig.java │ │ ├── AsyncConfig.java │ │ ├── Knife4jConfig.java │ │ └── MailConfig.java │ ├── common/ # 公共类 │ │ ├── Result.java │ │ └── GlobalExceptionHandler.java │ └── enums/ # 枚举 │ └── ChannelType.java └── src/main/resources/ ├── application.yml # 配置文件 ├── schema.sql # 建表脚本 └── data.sql # 初始化数据 ``` ## 配置说明 ### 数据库配置 **H2(开发环境,默认):** ```yaml spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:austin;MODE=MySQL ``` **MySQL(生产环境):** ```yaml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/austin username: root password: root ``` ### 邮件配置 ```yaml spring: mail: host: smtp.example.com port: 465 username: your@email.com password: your-password ``` ### 异步线程池配置 ```yaml austin: async: core-pool-size: 10 max-pool-size: 20 queue-capacity: 1000 ``` ## Austin vs Mini Austin | 特性 | Austin | Mini Austin | |------|--------|-------------| | 核心功能 | ✅ | ✅ | | 多渠道支持 | 18+ | 6 (可扩展) | | 模板系统 | ✅ | ✅ | | 定时发送 | ✅ | ✅ | | 失败重试 | ✅ | ✅ | | 实时推送 | ❌ | ✅ | | Redis 队列 | ✅ | ✅ | | 限流保护 | ✅ | ✅ | | 统计分析 | ✅ | ✅ | | 延迟队列 | ✅ | TODO | | 分布式 | ✅ | TODO | | 数据仓库 | ✅ | ❌ | | Web 界面 | ✅ | TODO | | 复杂度 | 高 | 低 | | 部署难度 | 中 | 简单 | | 学习曲线 | 陡 | 平缓 | ## 开发计划 - [x] Phase 1: 核心功能 - [x] Handler 机制 - [x] 多渠道发送 - [x] 消息持久化 - [x] RESTful API - [x] Phase 2: 增强功能 - [x] 消息模板 - [x] 定时发送 - [x] 失败重试 - [x] 限流控制 - [x] 统计分析 - [x] WebSocket 实时推送 - [x] Redis 队列 - [ ] Phase 3: 高级功能 - [ ] Web 管理界面 - [ ] 链路追踪 - [ ] 监控告警 - [ ] 更多短信服务商 - [ ] 分布式支持 ## 扩展新渠道 参考 Austin 的 Handler 设计模式: 1. 实现 `MessageHandler` 接口 2. 继承 `AbstractMessageHandler` 3. 添加 `@Component` 注解 4. 实现 `doSend()` 方法 示例: ```java @Component public class MyMessageHandler extends AbstractMessageHandler { @Override public String getHandlerType() { return "mychannel"; } @Override protected SendResponse doSend(SendRequest request) { // 实现发送逻辑 return SendResponse.builder() .status("success") .build(); } } ``` ## 相关资源 - [Austin 官方仓库](https://gitee.com/zhongfucheng/austin) - [Austin 架构文档](https://blog.csdn.net/gitblog_00401/article/details/151071244) - [Spring Boot 官方文档](https://spring.io/projects/spring-boot) - [MyBatis Plus 官方文档](https://baomidou.com/) ## 许可证 MIT License --- **注意**: 本项目仅用于学习和研究,生产环境请使用原版 [Austin](https://gitee.com/zhongfucheng/austin)。