{"id":26863838,"url":"https://github.com/erland1988/async-task-hub","last_synced_at":"2025-10-13T01:19:50.424Z","repository":{"id":284859337,"uuid":"953913031","full_name":"erland1988/async-task-hub","owner":"erland1988","description":"Async Task Hub 基于 Go 语言开发，借助 MySQL 和 Redis 实现异步任务处理。适用于电商等业务场景，可有效管理任务执行流程，具备良好扩展性 。","archived":false,"fork":false,"pushed_at":"2025-04-02T13:29:31.000Z","size":490,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-13T01:19:47.644Z","etag":null,"topics":["go","task-manager","task-queue","task-scheduler"],"latest_commit_sha":null,"homepage":"https://yichenga.com/task/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erland1988.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-24T09:26:07.000Z","updated_at":"2025-04-02T13:29:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"fcb6d2d5-26aa-44cd-9687-c323025901c9","html_url":"https://github.com/erland1988/async-task-hub","commit_stats":null,"previous_names":["erland1988/async-task-hub"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/erland1988/async-task-hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erland1988%2Fasync-task-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erland1988%2Fasync-task-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erland1988%2Fasync-task-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erland1988%2Fasync-task-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erland1988","download_url":"https://codeload.github.com/erland1988/async-task-hub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erland1988%2Fasync-task-hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013887,"owners_count":26085325,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","task-manager","task-queue","task-scheduler"],"created_at":"2025-03-31T03:32:56.964Z","updated_at":"2025-10-13T01:19:50.419Z","avatar_url":"https://github.com/erland1988.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Async Task Hub项目说明\n\n## 一、项目用途\nAsync Task Hub致力于满足企业和开发者在异步任务处理方面的需求。在实际业务场景中，如电商平台订单生成后，会触发库存更新、积分计算、消息通知等一系列异步任务，Async Task Hub可有效管理这些任务的执行流程，确保任务高效、稳定运行。\n\n## 二、项目技术架构\nAsync Task Hub基于Go语言开发，采用MySQL存储数据，Redis管理任务队列，并通过分层架构设计，使各模块职责清晰，具备良好的可维护性与扩展性。\n\n## 三、项目作者\n项目作者：erland\n\n## 四、交流方式\n交流QQ群：1027932757\n\n## 五、开源协议\n本项目采用MIT开源协议，详情请见项目根目录下的`LICENSE`文件。\n\n## 六、项目目录结构\n```\n./\n├── common/               // 通用模块目录\n├── data/                 // 数据目录，如日志等\n├── global/               // 全局配置等相关目录\n├── public/               // 公共资源目录\n├── services/             // 服务相关目录\n├── src/                  // 项目源代码目录\n├── static/               // 静态资源目录\n├── vue/                  // Vue相关代码目录\n├──.env.production       // 生产环境环境变量配置文件\n├── docker-compose.yml    // Docker Compose配置文件\n├── Dockerfile            // Docker镜像构建文件\n├── go.mod                // Go模块依赖管理文件\n├── go.sum                // Go模块依赖版本文件\n├── main.go               // 项目入口文件\n├── package.json          // Node.js项目依赖管理文件\n├── package-lock.json     // Node.js项目依赖版本锁定文件\n├── LICENSE               // 开源协议文件\n└── README.md             // 项目说明文件\n```\n\n## 七、环境变量配置\n项目依靠环境变量进行配置，涵盖应用运行环境、访问地址、日志模式、数据库连接及Redis连接等关键信息。\n\n## 八、部署方法\n### （一）环境变量配置\n开发与部署时，**必须**复制`.env.production`为`.env`，并根据实际需求在`.env`文件中配置环境变量。若不进行此操作，项目将无法正常运行。\n\n### （二）Docker-Compose部署\n1. **确保环境准备**：服务器需安装Docker和Docker - Compose。\n2. **构建与启动**：\n   - 进入项目根目录。\n   - 执行命令`docker-compose up -d`。此命令会根据`docker-compose.yml`文件构建镜像并启动容器。`async_task_hub_nginx`服务基于`nginx:1.19.1 - alpine`镜像，负责网络代理，映射端口`8083:9090`，挂载配置文件和日志目录。`async_task_hub_app`服务构建项目自身镜像，设置副本数为3，暴露端口`9090`，挂载日志目录，并传递`.env`文件中的环境变量。\n3. **验证运行**：通过浏览器访问`http://服务器IP:8083/task/`，若能正常访问，说明项目已成功部署。\n\n## 九、默认账户密码\n项目初始化时会创建以下默认账户：\n1. **root**：密码为`123456`，角色为全局管理员，过期时间为当前时间往后10年。\n2. **admin**：密码为`123456`，角色为全局管理员，过期时间为当前时间往后10年。\n3. **test**：密码为`123456`，角色为应用管理员，过期时间为当前时间往后10年。\n\n密码经过MD5哈希处理存储于数据库中。\n\n## 十、项目核心功能\n1. **任务队列服务**：实现任务的入队、出队、处理以及丢失任务恢复等功能。能根据任务执行时间将任务有序加入队列，并按序弹出执行，同时处理任务执行过程中的各种状态及重试逻辑。\n2. **执行器客户端**：负责向执行器发送任务请求，构建包含必要信息的请求头，处理请求发送过程中的超时、错误等情况，并返回执行结果。\n3. **任务调度器**：启动任务队列监听器和监控器。监听器通过多线程处理任务队列中的任务，监控器定时恢复丢失任务并动态更新执行器超时时间等配置。\n\n## 十一、创建队列接口\n系统对外提供创建队列的业务接口，示例如下：\n```bash\ncurl --location --request POST 'http://服务器IP:8083/task/task/api/taskqueue/create' \\\n--header 'X - App - Key: key_3_1' \\\n--header 'X - App - Secret: secret' \\\n--header 'Content - Type: application/json' \\\n--data - raw '{\n    \"task_code\": \"code_7_1\",\n    \"parameters\": \"{\\\"a\\\": \\\"1\\\",\\\"b\\\": \\\"2\\\",\\\"c\\\": \\\"3\\\"}\",\n    \"relative_delay_time\": 60\n}'\n```\n此接口方便外部系统与Async Task Hub交互，灵活创建任务队列。\n\n## 十二、项目入口（main.go）\n项目入口`main.go`主要完成配置初始化、日志初始化、数据库与Redis连接初始化，根据环境变量设置Gin框架运行模式，并支持特定命令行参数。同时启动任务调度器、清理服务监控，初始化Gin路由并启动HTTP服务，实现优雅关闭服务。 ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferland1988%2Fasync-task-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferland1988%2Fasync-task-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferland1988%2Fasync-task-hub/lists"}