# async **Repository Path**: zh_0209_java/async ## Basic Information - **Project Name**: async - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-24 - **Last Updated**: 2025-08-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Async Spring Boot Starter 一个基于Spring Boot的异步任务管理starter,支持任务持久化、监控和重试机制。 ## 功能特性 - 🚀 异步任务执行 - 💾 任务状态持久化(MySQL + MyBatis) - 📊 任务监控和统计 - 🔄 自动重试机制 - ⚙️ 可配置的线程池 - 🎯 条件化自动装配 ## 项目结构 ``` async/ ├── async-spring-boot-starter/ # 启动器模块 ├── async-spring-boot-autoconfigure/ # 自动配置模块 ├── async-spring-boot-core/ # 核心功能模块 └── async-spring-boot-common/ # 公共模块(数据持久化) ``` ## 快速开始 ### 1. 引入依赖 ```xml com.zh async-spring-boot-starter 1.0-SNAPSHOT ``` ### 2. 配置数据库 在`application.yml`中添加配置: ```yaml async: datasource: enabled: true url: jdbc:mysql://localhost:3306/async_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: your_username password: your_password driver-class-name: com.mysql.cj.jdbc.Driver ``` ### 3. 创建数据库表 执行`async-spring-boot-common/src/main/resources/sql/async_task.sql`中的建表语句。 ### 4. 使用异步任务管理器 ```java @Service public class YourService { @Autowired private AsyncTaskManager asyncTaskManager; private String invokeDemo1() { return "invokeDemo1"; } public void executeTask() { // 提交异步任务 String result = asyncTaskManager.submitTask(this::invokeDemo1); System.out.println("任务执行结果: " + result); } } ``` ## 配置说明 ### 数据源配置 | 配置项 | 说明 | 默认值 | |--------|------|--------| | `async.datasource.enabled` | 是否启用数据源 | `true` | | `async.datasource.url` | 数据库连接URL | - | | `async.datasource.username` | 数据库用户名 | - | | `async.datasource.password` | 数据库密码 | - | ### 线程池配置 | 配置项 | 说明 | 默认值 | |--------|------|--------| | `async.thread-pool.core-pool-size` | 核心线程数 | `8` | | `async.thread-pool.maximum-pool-size` | 最大线程数 | `16` | | `async.thread-pool.keep-alive-time` | 线程存活时间 | `120` | | `async.thread-pool.queue-capacity` | 队列容量 | `4096` | ### 任务配置 | 配置项 | 说明 | 默认值 | |--------|------|--------| | `async.task.default-max-retry-count` | 默认最大重试次数 | `3` | | `async.task.default-timeout` | 默认超时时间 | `300000` | | `async.task.monitor-enabled` | 是否启用监控 | `true` | ## 数据库表结构 ### async_task 表 | 字段名 | 类型 | 说明 | |--------|------|------| | `id` | BIGINT | 主键ID | | `task_id` | VARCHAR(64) | 任务ID(唯一) | | `task_type` | VARCHAR(100) | 任务类型 | | `status` | VARCHAR(20) | 任务状态 | | `task_params` | TEXT | 任务参数(JSON) | | `result` | TEXT | 执行结果 | | `error_message` | TEXT | 错误信息 | | `start_time` | DATETIME | 开始时间 | | `end_time` | DATETIME | 结束时间 | | `duration` | BIGINT | 执行时长(毫秒) | | `retry_count` | INT | 重试次数 | | `max_retry_count` | INT | 最大重试次数 | | `create_time` | DATETIME | 创建时间 | | `update_time` | DATETIME | 更新时间 | ## 任务状态 - `PENDING`: 待执行 - `RUNNING`: 执行中 - `SUCCESS`: 成功 - `FAILED`: 失败 - `CANCELLED`: 已取消 ## 监控功能 ### Druid监控 访问 `http://your-app:port/druid` 查看数据库连接池监控信息。 ### 任务监控 通过`AsyncTaskMonitor`接口可以监控任务执行状态和统计信息。 ## 扩展功能 ### 自定义任务类型 ```java @Component public class CustomTaskManager implements AsyncTaskManager { @Override public T submitTask(Supplier task) { // 自定义任务执行逻辑 return task.get(); } } ``` ### 自定义回调 ```java @Component public class CustomTaskCallback implements AsyncTaskCallback { @Override public void onSuccess(String taskId, Object result) { // 任务成功回调 } @Override public void onFailure(String taskId, Exception exception) { // 任务失败回调 } } ``` ## 注意事项 1. 确保MySQL数据库已创建并运行 2. 检查数据库连接配置是否正确 3. 确保数据库用户有足够的权限 4. 建议在生产环境中调整线程池和连接池参数 ## 版本信息 - Spring Boot: 2.7.17 - MyBatis: 2.3.1 - MySQL: 8.0.33 - Druid: 1.2.20 - Java: 8+ ## 许可证 MIT License