yuluo-yx opened a new pull request, #4094:
URL: https://github.com/apache/rocketmq-dashboard/pull/4094

   ## 变更目的
   
   让现有消息发送对话框可以向 FIFO 和 DELAY Topic 发送对应类型的消息。
   
   Studio 已支持创建这两类 Topic,但发送接口只构造普通消息。Broker 
通过系统属性判断消息类型,而这些保留属性无法通过现有自定义属性入口设置,因此创建出的类型化 Topic 无法用该表单正确发送。
   
   ## 修改内容
   
   - FIFO 表单新增必填消息组,后端设置 `SHARDING_KEY`,使用 SDK `SelectMessageQueueByHash` 
按组选择队列。
   - DELAY 表单新增未来投递时间,发送 Unix 毫秒时间戳,由 `Message.setDeliverTimeMs` 写入 Broker 定时属性。
   - 缺省类型保持 NORMAL,旧请求兼容;缺少必填项、类型选项冲突及过去时间在取得 Producer 前返回 400 并记录失败审计。
   - 事务 Topic 显示应用事务生产者说明并禁止普通发送;该接口也明确拒绝 Lite 类型,避免伪造专用协议。
   - 保留消息体大小限制、实例凭据、发送状态检查及成功后的审计异常处理。FIFO 失败不会降级到随机队列发送。
   - 新增中文操作、协议边界、兼容及回滚说明。
   
   ## 价值与去重
   
   已核对 #1982、#1983:它们修复 Topic 创建时的 `message.type` 配置属性。本 PR 
处理消息本身的生产协议与表单输入,范围不同。检索既有 Issue/PR 未发现同范围的 FIFO/定时发送实现。
   
   协议直接依据 [RocketMQ 5.5.0 
TopicMessageType](https://github.com/apache/rocketmq/blob/rocketmq-all-5.5.0/common/src/main/java/org/apache/rocketmq/common/attribute/TopicMessageType.java)
 和 
[Message](https://github.com/apache/rocketmq/blob/rocketmq-all-5.5.0/common/src/main/java/org/apache/rocketmq/common/message/Message.java)。测试调用实际
 `parseFromMessageProperty`,确认生成的消息被识别为 FIFO、DELAY 和 NORMAL。
   
   ## 本地验证
   
   基线 `d6dee7d7ccfcf4886f02466ec51452a6928b2cc8`,Java 21、Node 
24.18.0,2026-09-08。
   
   ```bash
   cd server
   mvn -B -ntp 
-Dtest=TypedMessageSendTest,RocketMQAdminClientImplTest,TopicControllerTest,MetadataServiceTest
 verify
   cd ../web
   npx vitest run src/pages/instance/__tests__/TopicPage.test.tsx 
src/api/metadata.test.ts
   npm run build
   ```
   
   - 后端 114 个测试通过,Checkstyle 与打包通过,包含 15 个类型化发送测试及新增 HTTP 参数绑定测试。
   - JaCoCo:选项校验与发送主体 39/39 行、34/34 分支;含既有外层异常处理的整体发送路径 57/60 行(95%)。
   - 前端 31 个测试通过;TypeScript、Vite 构建和修改文件 ESLint 均通过。
   - Playwright 在同一次脚本中拦截本地 `/api/topics/send` 并返回测试响应,确认表单生成 
`messageType=FIFO`、`messageGroup=order-123` 和原始消息体,没有向真实 Broker 发送消息。
   - `git diff --check` 通过;8 个文件,433 行新增、2 行删除,共 435 行。
   
   同一原样上游基线的全量后端仍有 3 个既有失败(AuthCorsIntegrationTest 
两项、AliyunInstanceProviderTest 一项),依赖扫描也有既有漏洞。本 PR 
没有新增依赖,相关测试没有新增失败;不将增量结果称为项目级全量验收。未执行真实集群 E2E、压力、容量或混沌验证。
   
   ## 行为边界
   
   FIFO 的队列映射依赖当时路由;不承诺多个操作者并发发送时的应用级全局顺序。定时能力、最大间隔和投递精度由 Broker 决定,实际 Topic 
类型仍由 Broker 校验。发送确认表示 Broker 接受消息,不表示已经消费。
   
   无迁移,直接替换;没有新增配置或数据库字段。回滚本提交即可,已被 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]

Reply via email to