Repository navigation
✨ feat(message-queue): Kafka 列表只取元数据,详情按需加载 payload - #1570
Merged
Merged
Conversation
Contributor
变更概览
建议
模型评审
CI 门禁
门禁未通过。 规约意见不会代替 CI 门禁。这条评论会在后续推送和测试完成后更新。 |
单条 Kafka 消息可达十几 MB(实测 15,505,118 字节)。此前列表预览会把 payload 连同 flatten 出来的 value.xxx 列一起塞进每一行,单行 JSON 接近 30 MB,直接顶满驱动代理 32 MiB 的单帧上限:预览流中途中断,详情面板对十几 MB 内容做 JSON 美化还会卡死界面。 改为「列表取元数据、详情按需拉取」: - 驱动(kafka 专属):SELECT 支持列投影,WHERE partition = ? AND offset = ? 精确定位 单条;新增 FetchMessageAt 按定位读取;大 payload 不再展开成 value.xxx 列 - 驱动(kafka 专属):预览读取改为按批消费。conn.ReadMessage 内部是 「ReadBatch(1, maxBytes) → 只取第一条 → Close 丢弃批内其余消息」,等于一条一个网络 来回还白扔同批数据;改为一次 fetch 读完批内消息,单次 fetch 上限 1 MiB → 16 MiB - 驱动(kafka 专属):预览读取改为空闲超时。原来 1500 ms 是整个拉取的硬超时,大消息 读两三条就中断,表现为「topic 明明有很多消息却只列出几条」 - 客户端(不参与指纹):收到「单帧超限」失败帧时不再终止 transport,一条超大消息不再 让整个连接永久不可用;单帧上限维持 32 MiB 不变 - 前端:Kafka 预览命令改为 SELECT timestamp, partition, offset, key, value_size; 点击消息即按 partition+offset 拉取完整内容并缓存,无需再点按钮 - 前端:「跟随最新消息」自动选中的那条也会触发按需加载,不再停在「点按钮加载」状态 - 前端:详情加载失败会给出错误提示,不再静默留白 - 前端:超过 512 KB 的详情跳过 JSON 美化;列表卡片合并为单行,展示 topic · #offset · 大小 - 前端:详情头部把时间并到右侧与复制按钮同排;加载态改为骨架屏并显示消息大小, 加载完成时不再有布局跳动 - i18n:补充加载/失败文案(6 个语言),同步翻译压缩包 改动全部落在 kafka 专属文件与客户端侧,其余 25 个驱动的 agent 指纹保持不变, 只有 kafka 需要重建 agent(src-11e403fa66ffcdb4)。
AutumnNazi
force-pushed
the
dev-message-queue-fixes
branch
from
October 22, 2026 01:17
52764a9 to
85bbd8c
Compare
Merged
Syngnat
added a commit
that referenced
this pull request
Oct 23, 2026
## 发布目标 - 正式版本:v1.1.5 - 发布来源:dev 当前已合并代码 `a788abe67`(API Route 供应商预设) - 上一正式版本:v1.1.4 ## 本次准备 - 将 Wails 产品版本(`wails.json`)及 npm CLI 包版本(`npm/gonavi-cli/package.json`)对齐到 1.1.5。 - 同步版本契约测试断言,保持正式 tag 与 npm 包版本严格一致。 - 本 PR 收口 v1.1.4 之后 dev 的 145 个已合并提交,不含任何本地未提交工作。 - `main` 当前无 `dev` 之外的新提交,合入为 fast-forward 语义的常规合并。 ## 主要变更 **新功能** - 新增 XXL-JOB 任务调度中心工作台(#1576) - 落地可独立开发、分发、安装、运行的开放插件体系(#1562),插件入口提级为设置中心顶层入口 - 新增 Cheaper Inference(#1547)、API Route(#1580)AI 供应商预设 - AI 聊天模型菜单改为供应商子菜单并加入推理滑块(#1552) - Nacos 配置编辑器支持 JSON 解析器(#1548) - 字体画廊:与选择器一致的单选框布局并支持选中即预览、打开面板即拉取远程目录、下载字体可设为界面/代码字体、推荐名单扩充并默认展开 - Kafka 列表只取元数据,详情按需加载 payload(#1570) **问题修复** - 查询编辑器:输入时光标逐步右偏(#1579)、自动补全后重复输入右括号(#1553)、过程定义与批量执行误切库(#1545) - 数据同步:Oracle 迁移字符长度语义丢失(#1544) - 驱动代理:超大响应只让当前请求失败,不再终止连接(#1578) - 消息队列:Kafka 预览截断、详情加载与发布不可用(#1577) - 数据源:MongoDB SSH 隧道因 channel 不支持 deadline 一直超时(#1555)、Chroma 部分版本 v2 无 databases 列表端点(#1557) - 表概览:MongoDB / 消息队列 / Redis 回落 `information_schema`、向量库与时序库表名列表路径(#1556 / #1558 / #1559) - 数据库加载失败后的重试(#1563);内置 AI 刷新响应丢失导致强制重新登录(#1571) - Kingbase 维护库报错自助引导、调度作业源探测改为验证关系可解析;XXL-JOB 描述表补全 agent 声明;无 agent 的数据源描述视为合法 **界面与体验** - 统一顶栏样式联动设置(#1575)、工具栏横向滚动条自动隐藏(#1561)、连接树滚动条悬停显示(#1550) - 信息面板开关移到状态栏左下角(#1546);只读与可编辑结果集统一双击查看判定(#1543) - 收窄工作台页签样式作用域,修复设置中心嵌套页签布局 ## 验证 - 来源 dev 提交(`a788abe6`)的 Backend Tests 已成功;Dev Build 与 Docker Images 在其上运行中/已通过上一提交。 - 本地 7 组发版合同测试中 5 组共 38 项通过:`validate-npm-cli-package-version`、`legal-release-assets`、`generate-update-latest-manifest`、`generate-release-notes`、`validate-gui-update-manifest`、`download-mirror-config`。 - `cli-release-assets.test.py` 本机固定 2 项失败(`test_checksum_generation_keeps_cli_staging_separate`、`test_release_workflow_bash_blocks_are_syntax_checked`),原因与 v1.1.4 发版时一致:Windows 下子进程输出按 UTF-8 解码失败,与版本号无关,CI 在 Linux 上通过。 - 本次版本号提交 `git diff --check` 通过;`v1.1.4..HEAD` 区间的空白告警均来自既有生成文件(`wailsjs/go/models.ts`、`star-history.yml`、`sdk/typescript/src/index.ts`),非本 PR 引入。 ## 发布计划 - 校验并合并到 main 后,在该合并提交创建不可变 v1.1.5 tag。 - 跟踪 Release 与 Publish Draft Release 工作流,验收正式资产、Latest、更新清单及下载镜像。 - 发布结束后将 main 同步回 dev。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
Kafka 单条消息可达十几 MB(实测 15,505,118 字节)。此前列表预览会把 payload 连同
flattenKafkaMap展开出来的value.xxx列一起塞进每一行,单行 JSON 接近 30 MB,直接顶满驱动代理 32 MiB 的单帧上限:
JSON.parse+ 缩进美化,界面卡死。另外发现两处放大问题:
conn.ReadMessage内部是「每次新发一次 fetch,只取第一条,丢弃批内其余消息」,等于一条一个网络来回;预览的 1500 ms 又是整个拉取的硬超时,
大消息读两三条就被截断。
变更点
驱动(kafka 专属)
SELECT支持列投影;WHERE partition = ? AND offset = ?精确定位单条;新增FetchMessageAt按定位读取;大 payload 不再展开成value.xxx列ReadBatch读完批内消息),单次 fetch 上限 1 MiB → 16 MiBctx30 秒仍是硬上限客户端(不参与 agent 指纹)
单帧上限维持 32 MiB 不变
前端
SELECT timestamp, partition, offset, key, value_sizetopic · #offset · 大小i18n:补充加载/失败文案(6 个语言),同步
catalog.zip。影响范围
验证
新增用例覆盖:列投影与定位解析、投影模式丢弃 payload、超大 payload 不展开、
详情命令构造、卡片摘要回退、字节大小格式化。
指纹表相对
origin/dev只差 kafka 一行(src-11e403fa66ffcdb4),其余 25 个驱动不变。需要重建 agent
改动包含 agent 侧逻辑,kafka 指纹已更新。重启 GoNavi 后首次连接 Kafka 会自动重建 agent;
其它驱动的 agent 不受影响。