# data-receiver **Repository Path**: wangzhenSunshine/data-receiver ## Basic Information - **Project Name**: data-receiver - **Description**: 处理通号sap推到kafka的数据 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-28 - **Last Updated**: 2025-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Data Receiver Service ## 项目概述 Data Receiver是一个基于Spring Boot的服务,用于接收数据并存储到数据库中,同时提供REST API接口和JWT安全认证机制。该服务支持从客户端接收数据并发送到Kafka,以及直接将数据持久化到数据库。 ## 核心功能 - 数据接收与Kafka消息发送 - 数据库数据持久化(支持MySQL协议兼容数据库) - REST API接口(上下文路径:/receiver) - JWT身份认证与授权 - 应用健康监控与信息暴露 ## 技术栈 - Spring Boot 2.7.9 - Spring Kafka - Spring Data JDBC - MySQL Connector/J 8.0.27 - HikariCP连接池 - JWT (jjwt 0.11.5) - Java 8 - Maven ## 环境要求 - JDK 8+ - Maven 3.6+ - Kafka 2.13+集群 - MySQL/Doris数据库 ## 配置说明 主要配置文件:src/main/resources/application.yml ### 核心配置项 ```yaml # 服务配置 server: servlet: context-path: /receiver # 应用名称 spring: application: name: date-receiver # 数据库配置 datasource: url: jdbc:mysql://10.0.27.100:9030/bi_test username: admin password: zjK-3ML(poI1 driver-class-name: com.mysql.cj.jdbc.Driver # Kafka配置 kafka: bootstrap-servers: 10.0.27.100:9092,10.0.27.102:9092 producer: acks: 1 retries: 5 batch-size: 16384 compression-type: snappy # JWT配置 jwt: secret: w8QkQw1Qw2QkQw3Qw4QkQw5Qw6QkQw7Qw8QkQw9Qw0QkQwAQwBQkQwCQwDQkQwEQwFQkQwGQwHQkQwIQwJQkQwKQwLQkQwM= expiration: 473040000 # 单位:秒 ``` ## 构建与运行 ### 构建项目 ```bash mvn clean package -DskipTests ``` ### 运行服务 ```bash java -jar target/data-receiver-0.0.1-SNAPSHOT.jar ``` ## 监控端点 - 健康检查: /receiver/actuator/health - 应用信息: /receiver/actuator/info ## 注意事项 1. 确保Kafka集群和数据库服务可用 2. 根据实际环境调整application.yml中的连接参数 3. JWT密钥应在生产环境中使用更安全的生成方式 4. 数据库表结构需提前创建 ## 依赖说明 详细依赖信息请参见项目根目录下的pom.xml文件 ## API文档 ### DataReceiverController 基础路径: /receiver/data/receive/batch #### 1. 接收批量数据并发送到Kafka - 请求路径: POST /{topic} - 请求参数: - topic: Kafka主题名称 (路径参数) - 请求体: 包含数据列表的JSON数组 - 响应: 操作结果信息 **请求示例:** ```bash curl -X POST http://localhost:8080/receiver/data/receive/batch/test-topic \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '[ {"id": 1, "name": "test1"}, {"id": 2, "name": "test2"} ]' ``` **响应示例:** ```json { "status": "success", "message": "Data successfully sent to Kafka", "topic": "test-topic", "count": 2, "cost": 15 } ``` #### 2. 保存预算指标数据 - 请求路径: POST /records/yszk - 请求体: 预算指标记录列表 - 响应: 操作结果字符串 **请求示例:** ```bash curl -X POST http://localhost:8080/receiver/data/receive/batch/records/yszk \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '[ { "recordDate": "2023-10-01", "amount": 10000.00, "department": "财务部" } ]' ``` **响应示例:** ``` 数据批量插入yszk成功 ``` #### 3. 保存应付账款数据 - 请求路径: POST /records/yfzk - 请求体: 应付账款记录列表 - 响应: 操作结果字符串 **请求示例:** ```bash curl -X POST http://localhost:8080/receiver/data/receive/batch/records/yfzk \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '[ { "recordDate": "2023-10-01", "amount": 5000.00, "supplier": "供应商A" } ]' ``` **响应示例:** ``` 数据批量插入yfzk成功 ``` #### 4. 保存应付资料数据 - 请求路径: POST /records/yfzl - 类似yfzk接口,用于保存应付资料数据 #### 5. 保存应收资料数据 - 请求路径: POST /records/yszl - 类似yfzk接口,用于保存应收资料数据 #### 6. 获取JWT令牌 - 请求路径: GET /getToken - 响应: 包含JWT令牌的信息 **请求示例:** ```bash curl -X GET http://localhost:8080/receiver/data/receive/batch/getToken \ -H "Authorization: Bearer {token}" ``` **响应示例:** ```json { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "status": "success" } ``` #### 7. 刷新JWT令牌 - 请求路径: POST /refreshToken - 请求体: - refreshToken: 刷新令牌 - 响应: 包含新访问令牌和刷新令牌的信息 **请求示例:** ```bash curl -X POST http://localhost:8080/receiver/data/receive/batch/refreshToken \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }' ``` **响应示例:** ```json { "status": "success", "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ``` ### KaskController 基础路径: /receiver/data/kask #### 1. 推送数据到Kafka - 请求路径: POST /kaskPushData - 请求参数: - bizValue: 业务值 (请求参数) - 请求体: 包含数据的JSON数组 - 响应: 操作结果信息 **请求示例:** ```bash curl -X POST "http://localhost:8080/receiver/data/kask/kaskPushData?bizValue=test" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '[ { "id": 1, "name": "test data", "timestamp": "2023-10-01T12:00:00" } ]' ``` **响应示例:** ```json { "status": "success", "message": "Data successfully sent to Kafka", "topic": "kask_test", "count": 1, "cost": 10 } ``` #### 2. 获取JWT令牌 - 请求路径: GET /getToken - 与DataReceiverController中的getToken接口功能相同 #### 3. 刷新JWT令牌 - 请求路径: POST /refreshToken - 与DataReceiverController中的refreshToken接口功能相同