# QueueMessageDispatcher **Repository Path**: ruanjianfeng/QueueMessageDispatcher ## Basic Information - **Project Name**: QueueMessageDispatcher - **Description**: No description available - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-08 - **Last Updated**: 2025-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QueueMessageDispatcher QueueMessageDispatcher 是一个基于消息队列的分布式任务调度系统,用于高效地分发和处理各种任务。该系统支持多种数据库和消息队列,具有灵活的配置和可视化管理界面。 ## 系统架构 QueueMessageDispatcher 采用三层架构设计: 1. **API 服务层** - 基于 Node.js 和 Express 构建,提供 RESTful API 接口,用于任务管理、日志查询和系统配置 2. **调度器层** - 基于 Python 和 APScheduler 构建,负责从数据库获取任务配置,连接到 RabbitMQ 消息队列,执行任务调度和消息消费 3. **Web 界面层** - 基于 Vue.js 构建,提供直观的可视化管理界面,用于监控和管理任务 ## 技术栈 ### API 服务 - Node.js 18+ - Express 4.x - Sequelize 6.x - SQLite 3.x / MSSQL - Swagger UI Express ### 调度器 - Python 3.10+ - APScheduler 3.x - Pika (RabbitMQ 客户端) - SQLAlchemy 2.x - Requests ### Web 界面 - Vue.js 2.6.14 - Vue Router 3.5.x - Vuex 3.6.x - Axios ### 消息队列 - RabbitMQ ## 目录结构 ``` QueueMessageDispatcher/ ├── api/ # Node.js API 服务 │ ├── config/ # 配置文件 │ ├── controllers/ # API 控制器 │ ├── models/ # 数据模型 │ ├── routes/ # API 路由 │ ├── utils/ # 工具函数 │ ├── .env # 环境变量配置 │ ├── index.js # API 入口文件 │ └── package.json # 依赖配置 ├── data/ # 数据库文件目录 │ └── queue_transfer.db # SQLite 数据库文件 ├── doc/ # 文档目录 │ ├── QUEUE_TRANSFER_FLOW.md # 队列传输流程图 │ └── 表结构.txt # 数据库表结构说明 ├── scheduler/ # Python 调度器 │ ├── log/ # 日志目录 │ ├── src/ # 源代码 │ │ ├── api_client/ # API 客户端 │ │ ├── config/ # 配置管理 │ │ ├── database/ # 数据库操作 │ │ ├── rabbitmq/ # RabbitMQ 客户端 │ │ ├── scheduler/ # 调度器管理 │ │ ├── services/ # 业务逻辑服务 │ │ ├── test/ # 测试代码 │ │ ├── .env # 环境变量配置 │ │ └── app.py # 调度器入口文件 │ ├── requirements.txt # Python 依赖 │ └── rabbitmq_test.log # 测试日志 ├── web/ # Vue.js Web 界面 │ └── src/ # 源代码 │ ├── api/ # API 调用封装 │ ├── components/ # Vue 组件 │ ├── pages/ # 页面组件 │ ├── router/ # 路由配置 │ ├── store/ # 状态管理 │ ├── styles/ # 样式文件 │ ├── App.vue # 根组件 │ └── main.js # 入口文件 ├── LICENSE # 许可证文件 └── README.md # 项目说明文档 ``` ## 功能特性 1. **任务管理** - 创建、编辑、删除任务 - 配置任务执行频率和参数 - 启用/禁用任务 2. **消息队列集成** - 支持 RabbitMQ 消息队列 - 消息消费和分发 - 消费日志记录 3. **日志管理** - 任务执行日志 - 数据传输日志 - 消费日志 4. **多数据库支持** - 默认使用 SQLite 数据库 - 支持配置 MSSQL 数据库 5. **可视化管理界面** - 任务列表和详情 - 日志查询和分析 - 消费者管理 6. **灵活的配置** - 环境变量配置 - 支持不同环境的配置切换 ## 快速开始 ### 前置条件 - Node.js 18+ 和 npm - Python 3.10+ 和 pip - RabbitMQ 服务器 ### 安装和运行 #### 1. API 服务 ```bash # 进入 API 目录 cd api # 安装依赖 npm install # 运行开发模式 npm run dev # 或者运行生产模式 npm start ``` API 服务默认运行在 `http://localhost:3000`,Swagger 文档可访问 `http://localhost:3000/api-docs`。 #### 2. 调度器 ```bash # 进入调度器目录 cd scheduler # 安装依赖 pip install -r requirements.txt # 运行调度器 python src/app.py ``` #### 3. Web 界面 ```bash # 进入 Web 目录 cd web # 安装依赖 npm install # 运行开发服务器 npm run serve # 构建生产版本 npm run build ``` Web 界面默认运行在 `http://localhost:8080`。 ## 配置说明 ### 环境变量配置 #### API 服务 (`api/.env`) ```env # 服务器配置 PORT=3000 # 数据库配置 DB_TYPE=sqlite # 可选: sqlite, mssql DB_HOST=localhost DB_PORT=1433 DB_NAME=queue_transfer DB_USER=sa DB_PASSWORD=your_password # SQLite 配置(当 DB_TYPE=sqlite 时使用) SQLITE_PATH=../data/queue_transfer.db ``` #### 调度器 (`scheduler/src/.env`) ```env # API 服务地址 API_BASE_URL=http://localhost:3000 # 数据库配置 DB_TYPE=sqlite # 可选: sqlite, mssql DB_HOST=localhost DB_PORT=1433 DB_NAME=queue_transfer DB_USER=sa DB_PASSWORD=your_password # SQLite 配置(当 DB_TYPE=sqlite 时使用) SQLITE_PATH=../../data/queue_transfer.db # RabbitMQ 配置 RABBITMQ_HOST=localhost RABBITMQ_PORT=5672 RABBITMQ_USER=guest RABBITMQ_PASSWORD=guest RABBITMQ_VIRTUAL_HOST=/ ``` ## 数据库表结构 系统包含以下主要数据表: 1. **queue_transfer_tasks** - 任务配置表 2. **queue_transfer_data_logs** - 数据传输日志表 3. **queue_transfer_consumers** - 消费者配置表 4. **queue_transfe_data_consume_logs** - 消费日志表 详细表结构请参考 `doc/表结构.txt`。 ## 系统流程 1. 用户通过 Web 界面或 API 创建任务 2. 调度器定期从数据库获取任务配置 3. 调度器根据任务配置,连接到 RabbitMQ 消息队列 4. 调度器将任务消息发送到指定的队列 5. 消费者从队列中获取消息并执行任务 6. 执行结果记录到数据库日志表 7. 用户可通过 Web 界面查看任务执行状态和日志 详细流程请参考 `doc/QUEUE_TRANSFER_FLOW.md`。 ## 许可证 ISC