yuluo-yx opened a new pull request, #4110: URL: https://github.com/apache/rocketmq-dashboard/pull/4110
## 变更目的 消费组详情的队列进度表增加 `Set offset`,在离线维护期间调整一个队列的精确消费位置。例如只将 `orders / broker-a / Queue 1` 从 40 回放到 20,保留其他队列的位点。 现有 #2816 预览按 Topic 时间重置,#3310 修复全 Topic 重置的 force/离线行为,#3993/#3994 提供全 Topic 跳过积压预设;这些不提供指定队列的精确整数位点调整。已检索标题正文并补充在线 `single queue offset` 去重。 ## 实现范围 - 新增管理员 `POST /api/groups/queue-offset/preview` 和 `POST /api/groups/queue-offset`。 - 通过所选 Apache 实例的 Topic 路由找到目标主节点,检查消费组连接、队列保留范围和已提交位置,不接受任意 Broker 地址。 - 预览展示回放/跳过位置差与预计积压;提交重新检查连接、范围和 `expectedCurrentOffset`,发现漂移返回 409。 - 位点以十进制字符串跨 JSON/浏览器传递,保留 64 位整数精度;不存在的队列或消费位置不回填零。 - 只调用 SDK `updateConsumeOffset`,记录单队列成功/失败审计,保留中断状态,审计失败不触发误报重试。 - 增加队列行入口、目标确认、预览失效、提交锁定、成功后进度刷新及迟到结果隔离;云/Mock 和已识别的 POP/广播组禁用入口。 - 新增中文使用、限制、协议和数据回滚说明,无新依赖、配置或数据库字段。 依据官方 [DefaultMQAdminExtImpl](https://github.com/apache/rocketmq/blob/rocketmq-all-5.5.0/tools/src/main/java/org/apache/rocketmq/tools/admin/DefaultMQAdminExtImpl.java),`resetOffsetByQueueId` 先更新位点,再调用按时间重置协议;旧 Broker 路径可能忽略 Queue ID。因此这里使用仅发送 `UPDATE_CONSUMER_OFFSET` 的 `updateConsumeOffset`,不进入该回退路径。 ## 本地验证 基线 `d6dee7d7ccfcf4886f02466ec51452a6928b2cc8`,Java 21、Node 24.18.0,2026-09-08。 ```bash cd server mvn -B -ntp -Dtest=QueueOffsetTest,RuntimeAdminClientResolverTest,ConsumerGroupControllerTest,OperationAuditServiceTest,AuthInterceptorTest verify cd ../web npx vitest run src/api/queueOffset.test.ts src/components/__tests__/QueueOffsetDialog.test.tsx src/pages/instance/__tests__/ConsumerPage.test.tsx npm run build ``` - 后端 92 个测试通过,包括 17 个新位点场景和 2 个新权限场景;真实实例解析与管理客户端包装只模拟底层 SDK。 - 新增服务 JaCoCo 行覆盖率 63/63(100%),分支 29/32;Checkstyle 与打包通过。 - 前端 40 个测试通过,TypeScript、Vite、修改文件 ESLint 通过。 - Playwright 在本地真实消费组详情页验证队列入口、从 40 到 20 的回放预览、提交中的 `expectedCurrentOffset="40"` 及成功后禁用确认。两个精确本地 POST 明确返回受控结果,其他非 GET 中止,没有真实 Broker 写入。 - `git diff --check` 通过;12 个文件,共 1,086 行新增。 原样上游基线已有 3 个全量后端失败(AuthCorsIntegrationTest 两项、AliyunInstanceProviderTest 一项)与依赖漏洞。本 PR 无新增依赖,相关验证无新增失败,不将增量验证表述为项目级全量验收。真实集群 E2E、性能、压力、容量及混沌测试未执行。 调用方必须停止并保持全部消费者停止直到操作完成。目标节点连接查询是一次观测,不是分布式锁或原子比较交换;它不修改广播本地位点,也不清理 POP 不可见消息。网络超时后的结果可能不确定,页面不自动重试。 无迁移,直接部署;代码回滚移除接口与入口。数据回滚需在离线维护期间按照审计中的原位置重新调整,且原位置仍在 Broker 保留范围内。提交含 `[skip ci]`,验证在本地执行。 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
