From dbba229c91ac3b7b563445768a4d96833e9cc618 Mon Sep 17 00:00:00 2001 From: hailin Date: Fri, 19 Dec 2025 21:50:36 -0800 Subject: [PATCH] =?UTF-8?q?fix(reporting-service):=20=E5=90=AF=E5=8A=A8=20?= =?UTF-8?q?Kafka=20=E5=BE=AE=E6=9C=8D=E5=8A=A1=E6=B6=88=E8=B4=B9=E8=80=85?= =?UTF-8?q?=E4=BB=A5=E8=AE=B0=E5=BD=95=E7=9C=9F=E5=AE=9E=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 main.ts 添加 Kafka 微服务连接配置 - 调用 startAllMicroservices() 启动事件消费 - 支持消费 identity/authorization/planting 服务的事件 - 实现仪表板"最近活动"显示真实数据 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .claude/settings.local.json | 3 ++- .../services/reporting-service/src/main.ts | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 71f6cfcb..472cce36 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -260,7 +260,8 @@ "Bash(git commit -m \"$(cat <<''EOF''\nfeat(admin-web): 实现 Dashboard 页面真实 API 接入\n\n## 概述\n将 admin-web Dashboard 页面从模拟数据改为真实 API 调用,\n使用 React Query 实现数据获取、缓存和自动刷新。\n\n## 新增文件\n- dashboardService.ts: Dashboard API 服务封装\n- useDashboard.ts: React Query hooks\n- dashboard.types.ts: Dashboard 类型定义\n\n## API 接入\n- /dashboard/stats: 统计卡片(总认种量、总用户数、省/市公司数)\n- /dashboard/charts: 趋势图表(支持 7d/30d/90d 周期切换)\n- /dashboard/region: 区域分布\n- /dashboard/activities: 最近活动\n\n## UI 优化\n- 添加加载骨架屏\n- 添加错误重试机制\n- 添加空数据提示\n- 优化图表周期切换交互\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 \nEOF\n)\")", "Bash(npx next:*)", "Bash(npx prisma validate:*)", - "Bash(dir /s /b \"c:\\Users\\dong\\Desktop\\rwadurian\\backend\\services\\admin-service\\Dockerfile*\")" + "Bash(dir /s /b \"c:\\Users\\dong\\Desktop\\rwadurian\\backend\\services\\admin-service\\Dockerfile*\")", + "Bash(dir /b \"c:\\Users\\dong\\Desktop\\rwadurian\\frontend\")" ], "deny": [], "ask": [] diff --git a/backend/services/reporting-service/src/main.ts b/backend/services/reporting-service/src/main.ts index adfe6f24..d972c789 100644 --- a/backend/services/reporting-service/src/main.ts +++ b/backend/services/reporting-service/src/main.ts @@ -1,6 +1,7 @@ import { NestFactory } from '@nestjs/core'; import { ValidationPipe, Logger } from '@nestjs/common'; import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; +import { MicroserviceOptions, Transport } from '@nestjs/microservices'; import { AppModule } from './app.module'; async function bootstrap() { @@ -8,6 +9,26 @@ async function bootstrap() { const app = await NestFactory.create(AppModule); + // 连接 Kafka 微服务消费者 + const kafkaBrokers = (process.env.KAFKA_BROKERS || 'localhost:9092').split(','); + app.connectMicroservice({ + transport: Transport.KAFKA, + options: { + client: { + clientId: process.env.KAFKA_CLIENT_ID || 'reporting-service', + brokers: kafkaBrokers, + }, + consumer: { + groupId: process.env.KAFKA_GROUP_ID || 'reporting-service-group', + }, + subscribe: { + fromBeginning: false, + }, + }, + }); + + logger.log(`📡 Kafka consumer connecting to: ${kafkaBrokers.join(', ')}`); + // Global prefix app.setGlobalPrefix('api/v1'); @@ -44,6 +65,11 @@ async function bootstrap() { SwaggerModule.setup('api/docs', app, document); const port = process.env.PORT || 3008; + + // 启动所有微服务(包括 Kafka 消费者) + await app.startAllMicroservices(); + logger.log('📡 Kafka microservice started - listening for events'); + await app.listen(port); logger.log(`🚀 Reporting Service is running on: http://localhost:${port}`);