# FastTasks **Repository Path**: missingaeon/fast-tasks ## Basic Information - **Project Name**: FastTasks - **Description**: FastTasks是一个基于SpringBoot的专注于高效任务处理的开源项目,提供多种任务调度与管理功能,适用于需要快速响应和高并发处理的场景。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-14 - **Last Updated**: 2025-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FastTasks 项目说明 ## 项目简介 Fast-Tasks 是一个基于 Spring 的轻量级任务调度框架,旨在简化多任务并行处理、任务依赖管理以及任务状态记录等功能。它提供了丰富的注解支持和自动配置,使开发者能够以声明式方式管理任务流程。 主要特性包括: - 支持任务依赖(`@DependentTasks`) - 支持任务跳过(`@SkipTask`) - 支持任务执行记录(CSV 格式) - 支持异步和批处理任务 - 可通过 `@TaskScan` 自动扫描任务类 - 提供线程池配置,支持并发执行 - 支持任务重试、任务优先级排序等高级功能 --- ## 快速开始 ### 1. 添加依赖 该项目为 Maven 项目,请在你的 `pom.xml` 中引入以下依赖: ```xml org.aeon.fasttasks fast-tasks-core 1.0.0 ``` ### 2. 启用任务支持 在你的任务实现类注解以添加到任务队列: ```java @EnableTask public class TaskTest implements Task { } ``` 或者使用 `@TaskScan` 指定扫描的任务包: ```java @TaskScan(basePackages = "org.aeon.tasks") @Configuration public class TaskConfig { } ``` 或者使用配置文件 ```yml fast-tasks: task-classes: - org.aeon.tasks.MyTask - org.aeon.tasks.AnotherTask ``` --- ## 任务定义 你可以通过实现 `Task` 接口定义任务: ```java public class MyTask implements Task { @Override public void runTask() { // 执行任务逻辑 } } ``` ### 任务注解 | 注解 | 用途 | |------|------| | `@EnableTask` | 标注需要启用的任务 | | `@TaskScan` | 指定任务扫描的包路径 | | `@DependentTasks` | 标记任务的前置依赖 | | `@SkipTask` | 标记任务为可跳过 | | `@LoopTask` / `@LoopTaskPro` | 支持任务循环执行 / 支持任务并发执行 | | `@InjectCsvRecorder` / `@InjectAsyncCsvRecorder` | 注入任务记录器(同步/异步) | --- ## 配置说明 项目支持通过 `application.yml` 或 `application.properties` 进行配置,配置前缀为 `fast-tasks`。 ### 示例配置(`application.yml`) ```yaml fast-tasks: enableTaskRecords: true taskClasses: - org.aeon.tasks.MyTask - org.aeon.tasks.AnotherTask batchWorkTasksExecutorProperties: corePoolSize: 10 maxPoolSize: 20 queueCapacity: 100 bossTasksExecutorProperties: corePoolSize: 1 ``` --- ## 使用示例 ### 定义一个带记录器的任务 ```java @EnableTask public class TaskTest implements Task { @InjectCsvRecorder(path = "测试记录器.csv", recordingTime = false) private Recorder logger; @Override public Map prepareData() throws Exception { return Map.of("a", 9, "b", 8); } @Override public void runTask(TaskContext taskContext) throws Exception { logger.record(1, 2, taskContext.getTaskData("a"), taskContext.getTaskData("b")); // 等待100-2000ms ThreadUtil.sleep(ThreadLocalRandom.current().nextInt(0, 300)); } } ``` --- ## 任务执行与管理 `TaskManager` 负责调度和执行任务,并管理任务之间的依赖关系。 任务执行时会根据优先级排序并分配到相应的线程池中运行。 --- ## 日志与记录 框架支持将任务执行过程记录到 CSV 文件中,便于后续分析和调试。 - `CsvRecorder`:同步记录任务数据 - `AsyncCsvRecorder`:异步写入,提高性能 - `TaskRecorder`:记录任务执行状态(成功/失败) --- ## 贡献指南 欢迎提交 PR 和 Issue。请确保代码风格与现有代码一致,并提供清晰的提交信息。 --- ## 协议 本项目遵循 MIT 开源协议。详情请查看 `LICENSE` 文件。 --- ## 联系方式 如有问题,请提交 Issue 或联系项目作者。 --- ## 测试 项目包含基础的 Spring Boot 测试类 `FastTasksApplicationTests`,可验证上下文加载是否正常。 ```java @SpringBootTest class FastTasksApplicationTests { @Test void contextLoads() { } } ```