上报入口 /events/batch·/perf/beacon 从请求线程内同步写改为「轻量校验 + 投递 telemetry-event 主题、 消费侧异步落库+聚合+quality_score 回灌 feed」。灰度开关 telemetry.mq.enabled(默认关=同步回落、现行行为逐字不变)。 - TelemetryEventProducer:逐条投递 event/perf tag、keys=traceId、syncSend 带超时+RocketMQ 自带重试; 发送失败不外抛、按 rejected 交前端重传兜底(不 500 阻断上报)。 - TelemetryEventConsumer:@RocketMQMessageListener 落地骨架,consumeThreadNumber=consumeThreadMax=8 (min=max 破 consumeThreadMax 死参数坑,受 DB 池默认 10 约束);瞬时故障外抛触发 ≤16 次重投转 DLQ, 毒消息吞掉 ack 防重投风暴;幂等由 eventId(uk_event_id)保证重投不双计。 - EventIngestServiceImpl:入口路由(MQ 在席=投递、缺席=同步回落),新增 consumeFromMq 单条事务入口 逐字复用同步写核心 ingestOne——聚合行为与 quality_score 回灌 feed 行为与改造前一致,仅执行位置搬到消费线程; ObjectProvider 软注入生产者 + @Lazy 自代理保回落单条事务真生效。 验证:模块 59 单测绿(既有 EventIngestServiceImplTest 13 个逐字不变通过=回灌行为不变;新增生产者3/消费者4/ MQ路径5);连 mini-infra 真 broker(100.64.0.8:9876)往返 IT 绿(produce→broker→consume→consumeFromMq 转调, 往返序列化保真)。整条 HTTP POST→MQ→真库聚合行 的单体 e2e 待后端全栈窗口(同阶段〇 C1/C2/C3 处置)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
123 lines
5.1 KiB
XML
123 lines
5.1 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||
<parent>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>game-module-telemetry</artifactId>
|
||
<version>${revision}</version>
|
||
</parent>
|
||
<modelVersion>4.0.0</modelVersion>
|
||
<artifactId>game-module-telemetry-server</artifactId>
|
||
<packaging>jar</packaging>
|
||
|
||
<name>${project.artifactId}</name>
|
||
<description>
|
||
telemetry 模块业务实现:controller(app/admin) / service / dal(DO·Mapper) / convert / mq(consumer 对接点)。
|
||
被 huijing-server 聚合启动(随单体一起加载,无需独立 bootstrap)。
|
||
</description>
|
||
|
||
<dependencies>
|
||
<!-- Spring Cloud 基础环境 -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>huijing-spring-boot-starter-env</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 本模块对外契约层 -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>game-module-telemetry-api</artifactId>
|
||
<version>${revision}</version>
|
||
</dependency>
|
||
|
||
<!-- 依赖 feed 的 -api:算分回灌排序行(ingestBatch → FeedApi.upsertRank mode=QUALITY_REFRESH,§3.5 C5;只依赖对方 -api 不依赖 -server,守门④无环) -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>game-module-feed-api</artifactId>
|
||
<version>${revision}</version>
|
||
</dependency>
|
||
|
||
<!-- 依赖 project 的 -api:创作者看板归属隔离(getMyGameIds 取"我的作品" gameId 集合后限定聚合范围;只依赖对方 -api 不依赖 -server,守门④无环)
|
||
+ U5 经营看板「发布量」(countPublished) -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>game-module-project-api</artifactId>
|
||
<version>${revision}</version>
|
||
</dependency>
|
||
|
||
<!-- 依赖 trade 的 -api:U5 经营看板「GMV」(getRevenueReport;只依赖对方 -api 不依赖 -server,守门④无环) -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>game-module-trade-api</artifactId>
|
||
<version>${revision}</version>
|
||
</dependency>
|
||
|
||
<!-- 依赖 aigc 的 -api:U5 经营看板「生成量」(countSucceededTasks;只依赖对方 -api 不依赖 -server,守门④无环) -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>game-module-aigc-api</artifactId>
|
||
<version>${revision}</version>
|
||
</dependency>
|
||
|
||
<!-- Excel 导出(U5 经营看板/收益行导出 ExcelUtils + @ExcelProperty) -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>huijing-spring-boot-starter-excel</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 业务组件:数据权限 + 多租户(DO 继承 TenantBaseDO) -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>huijing-spring-boot-starter-biz-data-permission</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>huijing-spring-boot-starter-biz-tenant</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Web + 安全:@RestController / @PreAuthorize / 当前登录用户 -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>huijing-spring-boot-starter-security</artifactId>
|
||
</dependency>
|
||
|
||
<!-- DB:MyBatis Plus(BaseMapperX / LambdaQueryWrapperX / BaseDO) -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>huijing-spring-boot-starter-mybatis</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 缓存 -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>huijing-spring-boot-starter-redis</artifactId>
|
||
</dependency>
|
||
|
||
<!-- RPC 远程调用(跨模块互调,预留回灌 feed/project) -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>huijing-spring-boot-starter-rpc</artifactId>
|
||
</dependency>
|
||
|
||
<!-- RocketMQ(切片一 阶段〇 R1:telemetry 批量事件入口改 MQ 异步消费):RocketMQTemplate / @RocketMQMessageListener。
|
||
starter-mq 以 optional=true 声明本 starter(不传递),故本模块须显式直依赖;版本由 huijing 依赖管理统一控制。 -->
|
||
<dependency>
|
||
<groupId>org.apache.rocketmq</groupId>
|
||
<artifactId>rocketmq-spring-boot-starter</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 测试 -->
|
||
<dependency>
|
||
<groupId>com.wanxiang</groupId>
|
||
<artifactId>huijing-spring-boot-starter-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
</dependencies>
|
||
|
||
<build>
|
||
<finalName>${project.artifactId}</finalName>
|
||
</build>
|
||
|
||
</project>
|